一步一步的了解webpack4的splitChunk插件(小结)(2)

commons: { chunks: "initial", minChunks: 2, maxInitialRequests: 5, // The default limit is too small to showcase the effect minSize: 0 // This is example is too small to create commons chunks }, 'vendor-pageA': { test: /vue/, // 直接使用 test 来做路径匹配 chunks: "initial", name: "vendor-pageA", enforce: true, }, 'vendor-pageB': { test: /react/, // 直接使用 test 来做路径匹配 chunks: "initial", name: "vendor-pageB", enforce: true, },

成功打包出来了自己想要的东西。

一步一步的了解webpack4的splitChunk插件(小结)

动态引入

动态引入大家应该都不陌生,就是大家所说的懒加载,直接在pageA和pageB页面里动态引入common-async.js,在这里我先说说,splitChunk应该是可以自动化处理类似commonChunk里的async,child等情况的。

import(/* webpackChunkName: "common-async.js" */"./common-async").then(common => { console.log(common); })

还不错,成功打包出来了

一步一步的了解webpack4的splitChunk插件(小结)

这时候再试试,在这个common-async.js里面在引入共同的代码f.js,看看会不会重复打包

一步一步的了解webpack4的splitChunk插件(小结)

f.js成功的被抽离出来了,其他文件也没有被重复打包,挺好的。

一步一步的了解webpack4的splitChunk插件(小结)

注意的地方

cacheGroups 会继承和覆盖splitChunks的配置项,但是test、priorty和reuseExistingChunk只能用于配置缓存组。。

cacheGroups 里的每一项最好都要加上chunks参数,不然可能打包不出来你想要的东西。

minSize 默认是30KB(注意这个体积是压缩之前的)在小于30kb的情况下一定要设置一个值,否则也可能打包不出来你想要的东西,而且这东西要加在cacheGroups里面。

priority 在某些情况下,还是挺有用的,可以设置打包chunks的优先级。

上面的例子里面配置了一个commons,这里的name可以自己设置,也可以不设置,我是没设置的,你可以试试设置了是什么样子的,然后你就会明白这个name其实在某些情况下还是不设置的比较好。

commons: { chunks: "initial", minChunks: 2, maxInitialRequests: 5, // The default limit is too small to showcase the effect minSize: 0 , name: "commons" },

源码

代码分割

代码懒加载

参考文章

webpack文档
官方demo

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:http://www.heiqu.com/a9e432fe13239e43d976d2488b782a61.html