我刚刚意识到,如果您使用 动态加载模块require.ensure()
,webpack 将不会一起分析和分块依赖项。这在某种程度上是有道理的,有人可能会争辩说,webpack 无法知道这些模块是否会被传输,但我们是否可以强制 webpack 完成这项工作?
示例是:
应用程序.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');
模块1.js
let io = require( 'socket.io-client' );
模块2.js
let io = require( 'socket.io-client' );
这个编译的结果是,这两个模块都将整个 socket-io 库“链接”到它们的块中。我最初的期望是,CommonsChunkPlugin会抓住那些requires
并将那个大库放入一个公共块中。
new webpack.optimize.CommonsChunkPlugin( 'common' ),
然而不起作用。当然,我总是可以手动“解决”这种依赖关系,但我希望 webpack 能以某种方式做到这一点?