Webpack watch() с несколькими точками ввода - испускание пакетов для неизменяемых файлов?
В моем webpack.config.js у меня есть 3 отдельных точки входа, одна для пакета JS, одна для основного пакета SCSS и одна для отдельного пакета SCSS, который не имеет отношения к основному набору SCSS.
Когда я использую API webpack.watch(), по какой-либо причине редактирование, скажем, исходных файлов JS, вызывает перекомпиляцию не только пакета JS, но и 2 пакета SCSS. Почему это и как я могу остановить это поведение и убедиться, что только отредактированная точка входа перекомпилирована?
Причина, по которой это проблема, заключается в том, что я использую browserersync, а для пакета CSS перекомпилирует im, просто вставляя CSS вместо перезагрузки, но в HTML/JS редактирует его перезагрузку. Однако, если я отредактирую SCSS, и он также перекомпилирует JS/HTML browsersync, запускает перезагрузку вместо добавления CSS
Ответы
Ответ 1
В этом случае вам понадобится файл, позволяющий webpack определить, сколько изменений было сделано в каждой другой точке входа.
Для этого вы можете использовать файл манифест, предоставленный commonsChunkPlugin:
Например, если у вас есть следующие точки входа:
entry: {
app: 'main.js', // main entry point
vendor: ['jquery', 'react'] //Third libraries
}
Вы можете использовать плагин CommonsChunkPlugin:
new wepack.optimize.CommonsChunkPlugin({
name: ['vendor', 'manifest']
})
Эта конфигурация генерирует файл манифеста как другой вывод. В этом случае, если вы внесете изменения в свою точку входа "приложение", веб-пакет только собирается перекомпилировать пакет вывода main.js(в соответствии с форматом "filename" в конфигурации "output" ), поскольку пакет поставщиков уже является то же самое.
Вы можете попробовать это со своими точками входа.