【发布时间】:2017-01-09 09:04:34
【问题描述】:
我刚刚意识到,如果你使用require.ensure() 动态加载模块,webpack 不会一起分析和分块依赖项。这在某种程度上是有道理的,有人可能会争辩说,webpack 无法知道这些模块是否会被传输,但我们是否可以强制 webpack 完成这项工作?
例子是:
app.js:
require.ensure([ 'module1.js' ], ( require ) => {
// at some point
require( 'module1.js' );
}, 'Module1');
require.ensure([ 'module2.js' ], ( require ) => {
// at some point
require( 'module2.js' );
}, 'Module2');
module1.js
let io = require( 'socket.io-client' );
module2.js
let io = require( 'socket.io-client' );
这个编译的结果是,这两个模块都将整个 socket-io 库“链接”到它们的块中。我最初的期望是,CommonsChunkPlugin 会捕获那些 requires 并将那个大库放入一个公共块中。
new webpack.optimize.CommonsChunkPlugin( 'common' ),
但是不起作用。当然,我总是可以手动“解决”这种依赖关系,但我希望 webpack 能以某种方式解决这个问题?
【问题讨论】:
-
Doe 在
CommonsChunkPlugin options中将minChunks设置为2改变情况? -
很遗憾没有。
标签: javascript webpack commonschunkplugin