Webpack 2 - 使用"供应商"捆绑包是不好的做法?

ctr*_*usb 6 webpack

我有以下类型的配置创建包:

{
  entry: {
    main: 'src/main.js',
    vendor: [ 'lodash', 'react' ]
  },
  plugins: [
    new webpack.optimize.CommonsChunkPlugin({
      name: 'vendor',
      minChunks: Infinity,
    })
  ] 
}
Run Code Online (Sandbox Code Playgroud)

正如您所看到的,我的目的是将我的供应商模块拆分为单独的捆绑包.这按预期工作,但我注意到在这种情况下似乎没有发生树木抖动.当我使用这种供应商方法时,即使我的源不使用它们,整个模块也将包含在供应商包中.

如果我不使用供应商的方法,总捆绑大小要小得多.

这是预期的行为吗?如果是这样,那么如果您希望利用树木摇动,那么使用这种技术会被认为是不好的做法?

Mic*_*att 0

我可能是错的,因为这是一种“没有两个版本是相同的”类型的事情,但我们在使用 commons chunk 插件时注意到了类似的问题。

我相信大小的增加和树摇晃的明显缺乏是因为某些包可能包含在主入口点和供应商入口点中 - 例如,许多小型通用实用程序包。对于一个入口点,Webpack 会对它们进行重复数据删除,但它不会知道主条目所需的内容已经是供应商条目所需的,除非您专门添加它们。

我们的解决方案,在与您类似的构建中,就是不使用供应商插件。构建时间较长,但结果较小。我相信公共块插件主要是为您可能有多个入口点的情况而设计的。