sourceMap: false,
parallel: true
})
);
plugins.push(
new CompressionWebpackPlugin({
filename: '[path].gz[query]',
algorithm: 'gzip',
test: productionGzipExtensions,
threshold: 10240,
minRatio: 0.8
})
);
// Zopfli压缩 https://webpack.js.org/plugins/compression-webpack-plugin/
// plugins.push(
// new CompressionWebpackPlugin({
// algorithm(input, compressionOptions, callback) {
// return zopfli.gzip(input, compressionOptions, callback);
// },
// compressionOptions: {
// numiterations: 15
// },
// minRatio: 0.99,
// test: productionGzipExtensions
// })
// );
// plugins.push(
// new BrotliPlugin({
// test: productionGzipExtensions,
// minRatio: 0.99
// })
// );
config.plugins = [
...config.plugins,
...plugins
];
}
},
chainWebpack: config => {
// 修复HMR
config.resolve.symlinks(true);
// 添加别名
config.resolve.alias
.set('@', resolve('src'))
.set('assets', resolve('src/assets'))
.set('components', resolve('src/components'))
.set('layout', resolve('src/layout'))
.set('base', resolve('src/base'))
.set('static', resolve('src/static'));
// 打包分析
if (process.env.IS_ANALYZ) {
config.plugin('webpack-report')
.use(BundleAnalyzerPlugin, [{
analyzerMode: 'static',
}]);
}
// 多页面配置,为js添加hash
// config.output.chunkFilename(`js/[name].[chunkhash:8].js`)
// 修改图片输出路径
// config.module
// .rule('images')
// .test(/.(png|jpe?g|gif|ico)(?.*)?$/)
// .use('url-loader')
// .loader('url-loader')
// .options({
// name: path.join('../assets/', 'img/[name].[ext]')
// })
},
css: {
modules: false,
extract: IS_PROD,
// 为css后缀添加hash
// extract: {
// filename: 'css/[name].[hash:8].css',
// chunkFilename: 'css/[name].[hash:8].css'
//},
sourceMap: false,
loaderOptions: {
sass: {
// 向全局sass样式传入共享的全局变量
// data: `@import "~assets/scss/variables.scss";$src: "${process.env.VUE_APP_SRC}";`
data: `$src: "${process.env.VUE_APP_SRC}";`
},
// px转换为rem
// postcss: {
// plugins: [
// require('postcss-pxtorem')({
// rootValue : 1, // 换算的基数
// selectorBlackList : ['weui', 'el'], // 忽略转换正则匹配项










