我需要有关将类似小部件的产品从Webpack 3.x迁移到4.x的帮助。我由于移除CommonsChunkPlugin而陷入困境,现在使用SplitChunksPlugin无法实现相同的行为。
Here是一个带有小演示的仓库,用于演示该问题。有什么方法可以使用Webpack 4.x来实现相同的代码拆分。
UPD:目标是将公共模块保留在装入程序条目捆绑包中,其他所有模块都应重用它们。请检查webpack-4分支,也许我在那里丢失了一些东西。
答案 0 :(得分:1)
一段时间后,我一个人来解决。
在Webpack 4中,无法将公共模块放入其中一个条目中,因此唯一的方法是将其放入common.js中(当然,如果有很大的公共包,将其拆分是有意义的分成几个较小的文件,并仅在需要时加载它们。)
splitChunks: {
chunks: 'all'
name: 'common',
minChunks: 2,
},
然后,为了使加载程序在没有common.js的情况下可执行,应该由splitChunks忽略:
splitChunks: {
chunks: chunk => chunk.name !== 'loader',
name: 'common',
minChunks: 2,
},
由于加载程序代码的结果,其他条目可以与公用程序一起加载
Promise.all([
loadCommon(),
loadEntry(),
]).then(() => runEntry());
很抱歉这个愚蠢的问题,结果证明是在表面上。