optimization: {
concatenateModules: true,
minimize: true,
minimizer: [
new TerserPlugin({
parallel: true,
extractComments: true,
terserOptions: {
compress: {
drop_console: true,
drop_debugger: false,
pure_funcs: ['console.log'],
drop_debugger: true,
},
format: {
comments: false,
},
},
}),
],
splitChunks: {
cacheGroups: {
//vendors,node_modules中除了vue,element等以外第三方。例如http-server,热加载等。正式环境打包如果再没有第三依赖,则不会产生。
vendors: {
name: 'chunk-vendors',
test: /[\\/]node_modules[\\/]/,
minChunks: 1,
priority: 1, //权重
chunks: 'initial',
},
corejs: {
name: 'corejs',
test: /[\\/]node_modules[\\/]core-js[\\/]/,
chunks: 'initial',
priority: 4,
reuseExistingChunk: true,
enforce: true,
},
animatecss: {
name: 'animatecss',
test: /[\\/]node_modules[\\/]animate.css[\\/]/,
chunks: 'all',
priority: 4,
reuseExistingChunk: true,
enforce: true,
},
vue: {
name: 'vue',
test: /[\\/]node_modules[\\/]vue[\\/]/,
chunks: 'all',
priority: 3,
reuseExistingChunk: true,
enforce: true,
},
'element-ui': {
name: 'element-ui',
test: /[\\/]node_modules[\\/]element-ui[\\/]/,
chunks: 'all',
priority: 3,
reuseExistingChunk: true,
enforce: true,
},
/**
* 权重必须高于父权重,且必须文件夹
*/
'element-utils': {
name: 'element-utils',
test: /[\\/]node_modules[\\/]element-ui[\\/]lib[\\/]utils[\\/]/,
chunks: 'all',
priority: 4,
reuseExistingChunk: true,
enforce: true,
},
'element-ui-theme': {
name: 'element-ui-theme',
test: /[\\/]node_modules[\\/]element-ui[\\/]lib[\\/]theme-chalk[\\/]/,
chunks: 'initial',
priority: 4,
reuseExistingChunk: true,
enforce: true,
},
vuex: {
name: 'vuex',
test: /[\\/]node_modules[\\/]vuex[\\/]/,
chunks: 'all',
priority: 3,
reuseExistingChunk: true,
enforce: true,
},
'vue-router': {
name: 'vue-router',
test: /[\\/]node_modules[\\/]vue-router[\\/]/,
chunks: 'all',
priority: 3,
reuseExistingChunk: true,
enforce: true,
},
axios: {
name: 'axios',
test: /[\\/]node_modules[\\/]axios[\\/]/,
chunks: 'all',
priority: 3,
reuseExistingChunk: true,
enforce: true,
},
},
},
},
console