从Webpack 3.x迁移到4.x

时间:2018-08-01 16:08:09

标签: javascript webpack

我需要有关将类似小部件的产品从Webpack 3.x迁移到4.x的帮助。我由于移除CommonsChunkPlugin而陷入困境,现在使用SplitChunksPlugin无法实现相同的行为。

Here是一个带有小演示的仓库,用于演示该问题。有什么方法可以使用Webpack 4.x来实现相同的代码拆分。

UPD:目标是将公共模块保留在装入程序条目捆绑包中,其他所有模块都应重用它们。请检查webpack-4分支,也许我在那里丢失了一些东西。

1 个答案:

答案 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());

很抱歉这个愚蠢的问题,结果证明是在表面上。