我正在创建一个React应用程序,我的主要依赖项是React
,react-dom
,Redux
,Immutable
和其他一些小型库。
问题是,当我使用webpack
构建应用程序时,它会加载一些额外的模块,例如lodash
和jQuery
,因为它们是嵌套的依赖项,这会导致我的构建太大(与WebpackBundleSizeAnalyzerPlugin
核对)。
但是,例如,如果我只使用render
中的react-dom
函数,为什么还需要另外加载完整的lodash模块?
是否可以强制webpack仅加载嵌套依赖模块的必要部分而不是完整的部分?
感谢
答案 0 :(得分:2)
听起来你正在使用webpack 1,它没有包含你想要的功能:树摇动。
Webpack 2有树摇动,这是实时代码导入。这意味着它只是捆绑您在应用程序中实际使用的库的代码和片段,这比普通的死代码消除要好得多(首先捆绑然后删除未使用的代码)。
我在过去遇到过这种情况,考虑迁移到webpack 2,你会得到这个很棒的功能。我的捆绑从30Mb到1Mb。随着缩小,其中一个应用程序降至800k。
如果您不想使用webpack 2,无论出于何种原因,还有其他选择,例如rollup。我成功使用了两者。 Rollup有一个更容易的配置,但是当看到资产比汇总的观察者更有效(更快)时,webpack 2仍然是我最喜欢的增量构建。两个结果捆绑包的大小与汇总和webpack 2大致相同。
有用的链接: