Force webpack to run build on multicore processor

Добрый день!

Проблема следующая: есть проект, front-end сборка которого осуществляется посредством webpack.js. На локальной машине build занимает ~ 1 минуту 20 секунд, а на production ~ 5 минут. Расследование показало, что в процессе сборки на локальной машине участвуют 4/4 возможных ядер параллельно, а на production - 1/8 (!) Кто с подобным сталкивался? Есть мысли как это “победить” или это проблема в архитектуре процессора?

Процессор на production: Xeon 8 Core E5-2650 2.00 GHz;
Процессор на локалке: Intel(R) Core(TM) i5-7400 3.00 GHz;

Спасибо.

Посмотри возвращает ли API nodejs-а правильное количество ядер в продакшене.

require('os').cpus().length

Если нет - то скорее всего проблема в этом. Тогда решением может быть установка другой версии nodejs, в котором это API работает.

Скорее всего на это значение смотрит webpack и его плагины когда решают какое количество процессов запускать.

Версия Node.js на production: 8.10.0
Версия Node.js на локалке: 8.9.0

API возвращает 4 ядра на локалке и 16 на production (8 физических двухпоточных ядер)

OS: Windows 10

Back-end: C#

Может быть это проблема настроек проекта на back-end?

Тоже так думаю. Попробуй сравнить содержимое process.env на локалке и продакшене.

Знаешь что именно отвечает за параллелизацию? Сам вебпак или плагин? Если плагин - напиши имя. Возможно его настройка требует определенной переменной окружения.

Что именно отвечает за параллелизацию не знаю, но суть в том, что это один и тот же код с абсолютно одинаковыми переменными окружения и.т.д. Скажу даже больше: Node.js используется в проекте только для тестов и сборки webpack. То есть по сути все настройки - это NODE_ENV=production. И это работает как положено.

Реализуется так:

cross-env NODE_ENV=production node_modules/.bin/webpack --progress --profile --display-error-details --config path/to.config.js

В общем, буду разбираться с back-end. Спасибо за подсказки. Отпишусь как что-то нароем т.к. тема интересная и Google не спасает.

1 лайк