47 lines
1.7 KiB
JavaScript
47 lines
1.7 KiB
JavaScript
'use strict'
|
|
var webpack = require('webpack')
|
|
|
|
module.exports = {
|
|
chainWebpack(config) {
|
|
// scss全局变量
|
|
const oneOfsMap = config.module.rule('scss').oneOfs.store
|
|
oneOfsMap.forEach((item) => {
|
|
item
|
|
.use('sass-resources-loader')
|
|
.loader('sass-resources-loader')
|
|
.options({
|
|
// 引入一个全局sass文件
|
|
resources: ['./src/styles/variables.scss'],
|
|
})
|
|
.end()
|
|
})
|
|
|
|
// 忽略 moment.js 的 locale 文件,减小体积
|
|
config.plugin('ignore')
|
|
.use(new webpack.IgnorePlugin(/^\.\/locale$/, /moment$/)); //忽略/moment/locale下的所有文件
|
|
|
|
// 忽略 qiun-data-charts 中非小程序平台的文件,减小体积
|
|
config.plugin('ignore-qiun-echarts')
|
|
.use(new webpack.IgnorePlugin(/echarts\.min\.js$/, /qiun-data-charts[\\/]static/));
|
|
|
|
// 生产环境优化
|
|
if (process.env.NODE_ENV === 'production') {
|
|
// 代码压缩 - 移除 console 和 debugger
|
|
config.optimization
|
|
.minimize(true)
|
|
.minimizer('terser')
|
|
.tap(args => {
|
|
if (args[0] && args[0].terserOptions) {
|
|
args[0].terserOptions.compress = {
|
|
...args[0].terserOptions.compress,
|
|
drop_console: true,
|
|
drop_debugger: true,
|
|
pure_funcs: ['console.log', 'console.info', 'console.debug']
|
|
}
|
|
}
|
|
return args
|
|
})
|
|
}
|
|
},
|
|
}
|