优化cdn动态加载管理端,修复砍价金额bug,删除部分不规范代码

This commit is contained in:
lemon橪
2021-09-01 10:11:12 +08:00
parent 84cfb26512
commit 71e4c49c3e
59 changed files with 1181 additions and 1527 deletions

View File

@@ -1,10 +1,55 @@
const path = require("path");
const CompressionPlugin = require("compression-webpack-plugin");
const UglifyJsPlugin = require('uglifyjs-webpack-plugin')
const resolve = dir => {
return path.join(__dirname, dir);
};
/**
* 在项目开发的时候将生产环境以及开发环境进行判断
* 将生产环境中的路径用cdn来进行优化处理
* 将开发环境中替换为本地的内容方便处理bug以及开启vueDev
* 我们可以根据环境变量进行相应的处理只有在产品的时候才让插件去自动注入相应的资源文件到html页面
*/
const enableProduction = process.env.NODE_ENV === "production"; // 是否生产环境
let externals = {
vue: "Vue",
axios: "axios",
"vue-router": "VueRouter",
vuex: "Vuex",
"view-design": "iview",
"vue-lazyload": "VueLazyload",
"js-cookie": "Cookies",
wangeditor: "wangEditor",
"sockjs-client": "SockJS",
vuedraggable: "vuedraggable",
"@antv/g2": "G2",
dplayer: "DPlayer"
};
// 使用CDN的内容
let cdn = {
css: ["https://cdn.jsdelivr.net/npm/view-design@4.1.1/dist/styles/iview.css"],
js: [
// vue must at first!
"https://cdn.jsdelivr.net/npm/vue@2.6.11/dist/vue.min.js",
"https://cdn.jsdelivr.net/npm/vuex@3.1.2/dist/vuex.min.js",
"https://cdn.jsdelivr.net/npm/vue-router@3.1.3/dist/vue-router.min.js",
"https://cdn.jsdelivr.net/npm/axios@0.19.0/dist/axios.min.js",
"https://cdn.jsdelivr.net/npm/view-design@4.1.1/dist/iview.min.js",
"https://cdn.jsdelivr.net/npm/vue-lazyload@1.3.3/vue-lazyload.min.js",
"https://cdn.jsdelivr.net/npm/js-cookie@2.2.1/src/js.cookie.min.js",
"https://cdn.jsdelivr.net/npm/dplayer@1.25.0/dist/DPlayer.min.js",
"https://cdn.jsdelivr.net/npm/wangeditor@latest/dist/wangEditor.min.js",
"https://cdn.jsdelivr.net/npm/sockjs-client@1/dist/sockjs.min.js",
"https://cdn.jsdelivr.net/npm/vuedraggable@2.23.2/dist/vuedraggable.umd.min.js",
"https://gw.alipayobjects.com/os/lib/antv/g2/4.1.24/dist/g2.min.js"
]
};
// 判断是否需要加载CDN
cdn = enableProduction ? cdn : { css: [], js: [] };
externals = enableProduction ? externals : {};
module.exports = {
css: {
loaderOptions: {
@@ -20,37 +65,13 @@ module.exports = {
port: 10003
},
chainWebpack: config => {
// @ 对应 src目录
config.resolve.alias.set("@", resolve("src"));
},
// 打包时不生成.map文件 避免看到源码
productionSourceMap: false,
// 部署优化
configureWebpack: {
// 使用CDN
externals: {
vue: "Vue",
"vue-i18n": "VueI18n",
axios: "axios",
"vue-router": "VueRouter",
vuex: "Vuex",
"view-design": "iview",
xlsx: "XLSX",
dplayer: "DPlayer",
"print-js": "printJS",
html2canvas: "html2canvas",
"vue-json-pretty": "VueJsonPretty",
"vue-lazyload": "VueLazyload",
gitalk: "Gitalk",
"js-cookie": "Cookies",
wangEditor: "wangEditor",
stompjs: "Stomp",
"sockjs-client": "SockJS",
vuedraggable: "vuedraggable"
},
externals: externals,
// GZIP压缩
plugins: [
new CompressionPlugin({
@@ -58,8 +79,24 @@ module.exports = {
threshold: 10240 // 对超过10k文件压缩
})
],
mode: "production",
optimization: {
runtimeChunk: "single",
minimizer: [
new UglifyJsPlugin({
uglifyOptions: {
// 删除注释
output: {
comments: false
},
compress: {
drop_console: true, // 删除所有调式带有console的
drop_debugger: true,
pure_funcs: ["console.log"] // 删除console.log
}
}
})
],
splitChunks: {
chunks: "all",
maxInitialRequests: Infinity,
@@ -81,6 +118,15 @@ module.exports = {
}
}
},
// 将cdn的资源挂载到插件上
chainWebpack(config) {
// @ 对应 src目录
config.resolve.alias.set("@", resolve("src"));
config.plugin("html").tap(args => {
args[0].cdn = cdn;
return args;
});
},
pluginOptions: {
"style-resources-loader": {