Closed Hilshire closed 5 years ago
找到了另一篇资料,按照上面的做法优化了一下,打包结果重要按设想推进了一点。
具体来说,就是把比较打的第三方依赖单独打包出来,并不是什么艰难的事情。目前使用的设置如下:
optimization: {
runtimeChunk: 'single',
splitChunks: {
chunks: 'all',
maxInitialRequests: Infinity,
minSize: 30000,
minChunks: 1,
cacheGroups: {
libs : {
test: /[\\/]node_modules[\\/]/,
priority: 0,
name: 'chunk-libs',
},
iview: {
name: 'chunk-iview',
priority: 1,
test: /[\\/]node_modules[\\/]iview[\\/]/,
},
echarts: {
name: 'chunk-echarts',
priority: 1,
test: /[\\/]node_modules[\\/]echarts[\\/]/,
},
moment: {
name: 'chunk-moment',
priority: 1,
test: /[\\/]node_modules[\\/]moment[\\/]/,
},
d3: {
name: 'chunk-d3',
priority: 1,
test: /[\\/]node_modules[\\/]moment[\\/]/,
},
default: {
name: 'chunk-default',
priority: -1,
minChunks: 2,
reuseExistingChunk: true,
}
}
}
}
priority
较大的模块打包进去;filename
这个属性。这个属性是不能随便设置的。按照 webpack
的提示,不是init
的模块设置后会报错这部分处理完之后,还希望优化的点有两个:
参照: 深入理解 Webpack 打包分块(上)
这篇文章提供了这样一段代码,应该是它认为的最佳实践:
这段代码会将 node_modules 里的依赖分割成一个个文件,并提供一个友好的文件名。但是,就我个人来说不是很喜欢过多的文件,只是希望将比较大的几个包单独打包出来,然后将剩下的 modules 单独打包成一个 vendor 文件。