我有以下类型的配置来创建包:
{
entry: {
main: 'src/main.js',
vendor: [ 'lodash', 'react' ]
},
plugins: [
new webpack.optimize.CommonsChunkPlugin({
name: 'vendor',
minChunks: Infinity,
})
]
}
正如您所看到的,我的意图是将我的供应商模块拆分为单独的捆绑包。这按预期工作,但我注意到在这种情况下似乎没有发生树木抖动。当我使用这种供应商方法时,即使我的源不使用它们,整个模块也将包含在供应商包中。
如果我不使用供应商方法,则总捆绑包的大小要小得多。
这是预期的行为吗?如果你愿意利用树木摇动,那么如果它被认为是不好的做法,那么它会被认为是不好的做法吗?
答案 0 :(得分:0)
我可能错了,因为它是一种"没有两个版本是相同的"事物的类型,但是当我们使用commons chunk插件时我们注意到了类似的问题。
我认为规模增加和明显缺乏树摇动是因为某些软件包可能包含在主要和供应商入口点中 - 例如,许多小型常见实用程序包。只需一个入口点,Webpack就会对它们进行重复数据删除,但它不知道主要条目所需的东西是供应商条目所必需的,除非你专门添加它们。
我们的解决方案与您的解决方案类似,只是不使用供应商插件。构建需要更长的时间但结果更小。我相信commons chunk插件主要是为你可能有几个入口点的情况而设计的。