CommonsChunkPlugin 配置minChunks: Infinity, 官方给的这段解释如何理解?

cjwj
  • 628
传入 Infinity 会马上生成 公共chunk,但里面没有模块

clipboard.png

vue-cli 中抽离manifest chunk解决vendor长期缓存问题,但minChunks: Infinity的具体作用是什么?

new webpack.optimize.CommonsChunkPlugin({
  name: 'manifest',
  minChunks: Infinity
}),
回复
阅读 3.7k
1 个回答

首先我们要明白CommonsChunk是干什么用的,Common通用、共用的意思,Chunk大块的意思,那么整个这个插件的作用就是把我们代码中用到的零散的js文件合并成一个一个的大块供系统调用,这样可以有效地减少http请求次数。

那么把哪些js合并在一个大块里,依据什么原则呢?就由这个minChunks来决定,minminimum的缩写,意思就是最少大块数,它需要是比1大的整数,同时还要求小于等于大块总数,这里如果你设置为2,那就是说如果有2个以上的大块都用到了某一个js文件,那么我们就把它抽取出来放到这个公共大块里,这样就不会造成重复浪费。

infinity是无限的意思,这就是说必须有无限多个大块都用到了这个js文件,我们才把它抽取出来放到这个公共大块里,很显然,不可能用任何js文件满足这个条件被无限多个大块使用,所以这里生成的其实就是一个空的大块,它只有一个文件名,而文件长度是0,这就是minChunks: Infinity的作用。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
宣传栏