2 个回答

minChunks 为 Infinity 的时候就是单纯创建这个文件,什么都不干嘛。

这里是为了保证 vendor entry 里的模块都只放在 vendor.js 里。

比如假设你后面又提取一遍 common chunks,叫 com1,minChunks 设为 2,恰好有两个模块里引用了 jquery,但 com1 并不会把 jquery 打包进去。

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

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

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

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