96 lines
2.7 KiB
JavaScript
96 lines
2.7 KiB
JavaScript
|
||
// 优化配置:结合压缩和代码拆分,提高页面访问速度
|
||
const path = require("path");
|
||
const CompressionPlugin = require('compression-webpack-plugin');
|
||
function resolve(dir) {
|
||
return path.join(__dirname, dir);
|
||
}
|
||
module.exports = {
|
||
// lintOnSave: false,
|
||
lintOnSave: true,
|
||
parallel: true, // 启用并行编译
|
||
productionSourceMap: false, // 禁用生产环境 source map,减少构建体积,提高页面加载速度
|
||
// 合并配置:gzip压缩 + 代码拆分
|
||
configureWebpack: {
|
||
// 只在开发环境使用source map,生产环境不使用
|
||
devtool: process.env.NODE_ENV === 'development' ? 'eval-cheap-module-source-map' : false,
|
||
plugins: [
|
||
new CompressionPlugin({
|
||
algorithm: 'gzip',
|
||
test: /\.(js|css|html)$/,
|
||
threshold: 10240,
|
||
minRatio: 0.8
|
||
})
|
||
],
|
||
optimization: {
|
||
splitChunks: {
|
||
chunks: 'all',
|
||
cacheGroups: {
|
||
// 拆分 echarts 库
|
||
echarts: {
|
||
name: 'chunk-echarts',
|
||
test: /[\\/]node_modules[\\/]echarts[\\/]/,
|
||
priority: 20,
|
||
chunks: 'all'
|
||
},
|
||
// 其他第三方库
|
||
// 拆分 quill 富文本编辑器
|
||
quill: {
|
||
name: 'chunk-quill',
|
||
test: /[\\/]node_modules[\\/]quill[\\/]/,
|
||
priority: 20,
|
||
chunks: 'all'
|
||
},
|
||
// 拆分 pdf 相关库
|
||
pdf: {
|
||
name: 'chunk-pdf',
|
||
test: /[\\/]node_modules[\\/](pdfh5|vue-pdf)[\\/]/,
|
||
priority: 20,
|
||
chunks: 'all'
|
||
},
|
||
// 拆分 高德地图
|
||
amap: {
|
||
name: 'chunk-amap',
|
||
test: /[\\/]node_modules[\\/]vue-amap[\\/]/,
|
||
priority: 20,
|
||
chunks: 'all'
|
||
},
|
||
// 拆分 canvas 相关库
|
||
canvas: {
|
||
name: 'chunk-canvas',
|
||
test: /[\\/]node_modules[\\/](canvas|dommatrix)[\\/]/,
|
||
priority: 20,
|
||
chunks: 'all'
|
||
},
|
||
// 拆分 微信 SDK
|
||
weixin: {
|
||
name: 'chunk-weixin',
|
||
test: /[\\/]node_modules[\\/]weixin-js-sdk[\\/]/,
|
||
priority: 20,
|
||
chunks: 'all'
|
||
},
|
||
// 其他第三方库
|
||
vendors: {
|
||
name: 'chunk-vendors',
|
||
test: /[\\/]node_modules[\\/]/,
|
||
priority: 10,
|
||
chunks: 'initial'
|
||
}
|
||
}
|
||
}
|
||
}
|
||
},
|
||
chainWebpack: (config) => {
|
||
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"));
|
||
},
|
||
|
||
publicPath: "./",
|
||
};
|
||
|