【发布时间】:2017-05-28 06:24:18
【问题描述】:
使用webpack 版本2.2.0。
我有一个带有单个 entry 配置的单页应用程序:entry: { app: ['./js/main.js'] }。这是一个通过import('./js/views/1')动态加载视图以进行代码拆分的应用程序。
我遇到的问题是生成的views/1、views/2 等文件中包含大量重复的模块。文件及其内容如下所示:
- 主:
./js/main.js- 0:
./js/views/1.js ./js/modules/a.js./js/modules/b.js- 1:
./js/views/2.js ./js/modules/b.js./js/modules/c.js
- 0:
请注意,views/1.js 和 views/2.js 都有共享的 modules/b.js 模块的完整副本。就我而言,我有几十个视图和更多共享模块,所以重复对我来说是一个巨大的问题。这是“webpack-bundle-analyzer”的样子:
我已尝试添加 CommonChunkPlugin 来帮助解决此问题,但它似乎根本不会影响动态导入。
我正在寻找一种让 webpack 自动将所有共享模块移动到单独文件中的方法。理想情况下,我希望 webpack 输出以下块:
- 主要:
./js/main.js- 0:
./js/views/1.js - 1:
./js/views/2.js - 2:
./js/modules/a.js - 3:
./js/modules/b.js - 4:
./js/modules/c.js
- 0:
所以每个模块实际上都是一个单独的块。这将是使用 HTTP2 加载它们的最佳方式。
这里是示例项目的代码:https://github.com/EvNaverniouk/webpack-code-splitting
我怎样才能做到这一点?
我相信这与这个问题有关:https://github.com/webpack/webpack/issues/3981
【问题讨论】:
-
我想我遇到了同样的问题here
-
@evgueni-naverniouk 你能解决这个问题吗?
-
@KFE 不。 webpack 4 默认情况下会进行更积极的分块,所以这有点帮助,但我仍然没有找到让它做我想做的事情的方法。
标签: webpack