配置split-chunks
开箱即用的 SplitChunksPlugin 对于大部分用户来说非常友好。
默认情况下,它只会影响到按需加载的 chunks,因为修改 initial chunks 会影响到项目的 HTML 文件中的脚本标签。
webpack 将根据以下条件自动拆分 chunks:
- 新的 chunk 可以被共享,或者模块来自于 node_modules 文件夹
- 新的 chunk 体积大于 20kb(在进行 min+gz 之前的体积)
- 当按需加载 chunks 时,并行请求的最大数量小于或等于 30
- 当加载初始化页面时,并发请求的最大数量小于或等于 30
Warning
选择了默认配置为了符合 Web 性能最佳实践,但是项目的最佳策略可能有所不同。如果要更改配置,则应评估所做更改的影响,以确保有真正的收益。
splitChunks.chunks
string = ‘async’ function (chunk)
这表明将选择哪些 chunk 进行优化。当提供一个字符串,有效值为 all,async 和 initial。设置为 all 可能特别强大,因为这意味着 chunk 可以在异步和非异步 chunk 之间共享。
配置
https://webpack.docschina.org/plugins/split-chunks-plugin/
module.exports = {//...optimization: {splitChunks: {chunks: 'async',minSize: 20000,minRemainingSize: 0,minChunks: 1,maxAsyncRequests: 30,maxInitialRequests: 30,enforceSizeThreshold: 50000,cacheGroups: {defaultVendors: {test: /[\\/]node_modules[\\/]/,priority: -10,reuseExistingChunk: true,},default: {minChunks: 2,priority: -20,reuseExistingChunk: true,},},},},};
例子
splitChunks: {chunks: 'all',minSize: 20000,maxAsyncRequests: 30,maxInitialRequests: 30,enforceSizeThreshold: 50000,maxSize: 0,cacheGroups: {monacoEditor: {chunks: 'async',name: 'chunk-monaco-editor',priority: 22,test: /node_modules[\\\/]monaco-editor[\\\/]/,enforce: true,reuseExistingChunk: true,},}
配置以下后
// defaultVendors: {// test: /[\\/]node_modules[\\/]/,// priority: -10,// chunks: 'initial',// reuseExistingChunk: true,// },// default: {// minChunks: 2,// priority: -20,// reuseExistingChunk: true,// },

没有配置 名字就是chunk-vendors
