webpack4 之 splitChunks
简介
主要作用是提取公共代码,防止代码被重复打包,拆分过大的js文件,合并零散的js文件。
SplitChunks 插件的作用就是通过配置让 Webpack 去帮你提取公共代码
chunks
webpack构建静态资源。左侧的资源通过webpack后,就都转换成web浏览器能识别的资源。
以下图的webpack为划分点,左边的资源就是moudle,右边的资源就是bundle。
为了优化性能,比如快速打开首屏,利用缓存等,我们需要对过大的bundle进行拆分,对于拆分出来的东西,我们叫它chunk
特点
经过webpack打包后,每个异步引入的文件也就是我们懒加载的页面都会对应一个 async chunk,某组件或文件在被不同的页面引用的情况下,会分别被这些 async chunk 合并进去,这就导致同一个组件模块或者文件被打包进多个页面中,造成了不必要的资源加载。这个问题可以通过splitChunks配置解决
webpack4有一个splitChunks默认配置,开箱即用
基本配置参数如下:
optimization: {
splitChunks: {
/**用来指定哪类 chunks 需要做拆包优化**/
// 异步引入的模块均会被拆分出来(webpack默认规则如此)
// initial表示只考虑入口文件同步引入的代码进行拆分,async表示只拆入口文件异步引入的文件内的同步引入模块进行拆分,而all表示以上两者都加入拆分范畴。
chunk: 'all',
// 大小超过30kb的模块才会被提取
minSize: 3000