を使用してモジュールを動的にロード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 が何らかの方法でそのトリックを実行できることを願っていましたか?