#webpack
Вопрос:
Я использую функцию экспорта нескольких конфигураций Webpack для создания двух отдельных наборов пакетов. Для второй конфигурации здесь (помеченной serviceWorkerConfig) требуется файл, созданный из первой конфигурации. Я наивно предположил, что они работают последовательно, потому что это был массив, но, думаю, нет.
const { merge } = require('webpack-merge');
const bundleProcessor = require("./webpack.bundleProcessor.config.js")
const serviceWorkerConfig = require("./webpack.serviceWorker.config.js")
module.exports = (env, argv) => {
return [
merge(bundleProcessor,
{ mode: "development", }
),
merge(serviceWorkerConfig, // requires file emitted from first configuration
{ mode: "development" }
),
];
};
Я попытался добавить module.exports.parallelism = 1;
, как в примере, приведенном в документах, но это, похоже, не работает для меня.
Есть ли способ заставить Webpack создавать несколько экспортеров конфигурации последовательно, а не параллельно?
Ответ №1:
Исходя из моего опыта, я сделал то же самое, запустив Webpack последовательно с помощью
- аналогично с вашей конфигурацией Webpack, но возвращает дикт, подобный
{
a: {configForA}, b: {configForB}
}
- вызовите webpack дважды, как
webpack NODE_ENV=a amp;amp; webpack NODE_ENV=b
Хотя это не какие-то настройки из Webpack, это сработало. Не уверен, пробовали ли вы это или оно вам подходит.
Комментарии:
1. Это похоже на то, что мы делаем в настоящее время. При первом запуске создается файл JSON со всеми активами, которые мне нужно предварительно кэшировать в service worker, который обрабатывается при втором запуске. Спасибо.
Ответ №2:
parallelism
это количество используемых процессоров (для этого вам понадобится однопоточный процессор). Хотя maxConcurrentWorkers
это звучит довольно многообещающе, но это доступно только через API NodeJS. Кроме того webpack-chain
, это, кажется, близко к тому, о чем вы просите… давайте посмотрим правде в глаза, нельзя объединить один элемент (как показано в примере выше — для сравнения, документы). И если это должно быть слияние, это должна быть объединенная конфигурация, состоящая из конфигурации для этого одного файла, который должен быть объединен с тем serviceWorkerConfig
, который зависит от него.
Я думаю, что плагин, который объединяет конфигурации, может даже не соответствовать заданию…. но один модуль должен зависеть от другого. Если определено как library
amp; externals
, это скорее будет представлять зависимость, которая, по-видимому, существует, но никогда не объявлялась.
Простой скрипт (как предложил @Wenbo) действительно может быть наименьшим усилием… и в промежутках он может также проверять / копировать один файл, о котором идет речь.