Запуск Angular i18 строит параллельно - PullRequest
0 голосов
/ 05 июня 2019

В моем приложении Angular есть поддержка 11 языков, и я использую встроенную в Angular интернационализацию (файлы XLF). Релиз занимает целую вечность (так как приложение собирается 11 раз!). Как я могу запустить задачи сборки параллельно (у меня 4-ядерный процессор)?

1 Ответ

1 голос
/ 05 июня 2019

Так как я не хотел, чтобы в будущем меняли код для добавления нового языка (я полагаю, подход дружественный к DevOps!), Я закончил писать скрипт оболочки (который будет использовать DevOps):

for arg; do \
    echo "Building for $arg"
    ng build --output-path $PROJECT_ROOT/public/$arg \
         --aot \
         --prod \
         --base-href /$arg/ \
         --i18n-file $LANGUAGE_ASSETS_DIR/i18n/$arg.xlf \
         --i18n-format xlf \
         --i18n-locale $arg & \
done
wait

затем добавил задачу i18n npm:

"build:i18n": "bash $PROJECT_ROOT/i18n.sh $LANGS",

и:

LANGS= en de fr ...

амперсанд в конце команды ng build создает новые процессы, что делает его параллельным. Мне удалось улучшить время сборки на 60%.

Таким образом, все, что нужно DevOps для добавления поддержки нового языка, - это добавить файл xlf перевода в ресурсы (который в нашем случае размещается отдельно в корзине AWS S3), а затем обновить переменную среды LANGS с новым языковым стандартом. и, наконец, вызвать задачу сборки (без изменения кода).

РЕДАКТИРОВАТЬ:

Также необходимо добавить команду wait в конце цикла for, чтобы дождаться завершения всех задач.

...