Webpack从嵌套依赖项中导入不需要的模块

时间:2017-06-28 00:03:35

标签: javascript jquery reactjs webpack lodash

我正在创建一个React应用程序,我的主要依赖项是Reactreact-domReduxImmutable和其他一些小型库。 问题是,当我使用webpack构建应用程序时,它会加载一些额外的模块,例如lodashjQuery,因为它们是嵌套的依赖项,这会导致我的构建太大(与WebpackBundleSizeAnalyzerPlugin核对)。 但是,例如,如果我只使用render中的react-dom函数,为什么还需要另外加载完整的lodash模块? 是否可以强制webpack仅加载嵌套依赖模块的必要部分而不是完整的部分? 感谢

1 个答案:

答案 0 :(得分:2)

听起来你正在使用webpack 1,它没有包含你想要的功能:树摇动。

Webpack 2有树摇动,这是实时代码导入。这意味着它只是捆绑您在应用程序中实际使用的库的代码和片段,这比普通的死代码消除要好得多(首先捆绑然后删除未使用的代码)。

我在过去遇到过这种情况,考虑迁移到webpack 2,你会得到这个很棒的功能。我的捆绑从30Mb到1Mb。随着缩小,其中一个应用程序降至800k。

如果您不想使用webpack 2,无论出于何种原因,还有其他选择,例如rollup。我成功使用了两者。 Rollup有一个更容易的配置,但是当看到资产比汇总的观察者更有效(更快)时,webpack 2仍然是我最喜欢的增量构建。两个结果捆绑包的大小与汇总和webpack 2大致相同。

有用的链接:

Webpack 2 tree shaking

Migrating from webpack 1 to 2