Я только что понял, что если вы загружаете модули динамически с помощью 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 каким-то образом поможет?
minChunks
на2
вCommonsChunkPlugin options
ситуации изменения? - person Everettss   schedule 02.09.2016