webpack4 之 splitChunks.minChunks

webpack4 之 splitChunks.minChunks

概要

这个配置表示 split 前单个非按需导入的 module 的并行数的最低下限。

注:只对 import 或 require 直接引入的 module 有效。

分析

简单来讲,假如 minChunks 设置为 n,那么某个 module 想要被拆分出去,那么它的共享次数(或者说并行请求次数必须 >= n):

1. minChunks设置为n
2. 假设有m个入口点,这m个入口点都直接引入了某个模块module(通过import或require直接或间接地引入了模块),也就是共享次数为m
3. 当m至少等于n时,module才会被单独拆分成一个bundle

但是,有个特例:

1. minChunks设置成1
2. 有一个入口点,入口点中import了一个模块,并打印了某些字符串,我们就叫它module
3. module被单独拆分成一个bundle,并且这个bundle文件中也包含了打印字符串的部分

我们注意到拆分出来的那个 bundle 包含了打印字符串的部分,那么如果入口点中仅仅包含了打印字符串的部分,没有引入 module,结果是怎样呢,结果就是打印的那部分代码被单独拆分出来了。所以当 minChunks 被设为 1 时,被拆分出来的某个 bundle 一定包含非引入模块代码,如果非引入模块代码存在的话,而当值设为大于 1 的数值时,则不会出现这种情况。

最后,还有一个点需要注意,minChunks 不能设为 0,其值为 >= 1 的正整数,不然为报错。

总结

  • splitChunks.minChunks 表示 split 前单个非按需导入的 module 的并行数的最低下限,即某个模块的引用次数必须大于等于设置的数值,该模块才能被拆分出来;
  • splitChunks.minChunks 值如果设为 1,会存在被拆分出来的 bundle 包含非引入模块代码的可能,大于 1 则不会有这种情况;
  • splitChunks.minChunks 值必须大于等于 1;
last(最后) 非常感谢您能阅读完这篇文章,您的阅读是我不断前进的动力。如果上述内容或许有些错误或者有些个人理解比较偏离实际,还望指出,谢谢!!!
对于上面所述,有什么新的观点或发现有什么错误,希望您能指出。
最后,附上个人常逛的社交平台: 知乎:zhihu.com/people/bi-an- csdn:blog.csdn.net/YaoDeBiAn github: github.com/yaodebian
个人目前能力有限,并没有自主构建一个社区的能力,如有任何问题或想法与我沟通,请通过上述某个平台联系我,谢谢!!!
发布于 2020-03-01 20:14