模块抽离
当项目时间累积,使用第三方模块的数量将会不断增加,从来导致打包后app.js过大,这时候就要抽离一些非常用或者体积过大的模块。
比如本项目中的富文本编辑器和百度echarts。使用频率低,文件还硕大,所以决定将这2着分离出独立的JS文件,自动按需加载使用。
splitChunks
本项目采用Webpack官方splitChunks分割模块。
javascript
//vue.config.js
splitChunks: {
chunks: "all",
automaticNameDelimiter: '~',
name: true,
cacheGroups: {
//第三方库抽离
vendor: {
name: "modules",
test: /[\\/]node_modules[\\/]/,
priority: -10
},
elicons: {
name: "elicons",
test: /[\\/]node_modules[\\/]@element-plus[\\/]icons[\\/]/
},
tinymce: {
name: "tinymce",
test: /[\\/]node_modules[\\/]tinymce[\\/]/
},
echarts: {
name: "echarts",
test: /[\\/]node_modules[\\/]echarts[\\/]/
}
}
}
这样配置在打包后生成的文件列表,如下:
sh
┌── dist
│ └── js
│ │ ├── modules.b98a1fa8.js # 其他第三方依赖
│ │ ├── tinymce.a3eec3b4.js # 富文本编辑器tinymce依赖
│ │ ├── echarts.c17b2673.js # 百度echarts用到的依赖
│ │ ├── elicons.1733fe4c.js # @element-plus/icons依赖
│ │ ├── app.73ba8337.js # 项目框架
│ │ └── ***.js # 其他视图
│ └── ***
分析
在打包完成后,将在 dist 根目录下生成report.html,可以查看各个模块的体积分析,从而决定是否需要抽离。