babel- node docs несут строгое предупреждение:
Не предназначен для использования в производстве
Вы не должны использовать
babel-node
в процессе производства. Это излишне тяжело, с высоким использованием памяти из-за того, что кеш хранится в памяти. Вы также всегда будете испытывать штраф за запуск, поскольку все приложение должно быть скомпилировано на лету.
Давайте сломаем это:
-
Использование памяти - да? Все модули "кэшируются" в памяти в течение всего срока службы вашего приложения. Что они здесь получают?
-
Старт-аут - как это проблема производительности? Развертывание веб-приложения уже занимает несколько секунд (или минут, если вы тестируете в CI). Добавление половины времени к запуску ничего не значит. Фактически, если время запуска имеет значение где угодно, это имеет большее значение в развитии, чем производство. Если вы перезагружаете свой веб-сервер достаточно часто, чтобы время запуска было проблемой, у вас возникли гораздо большие проблемы.
Кроме того, нет такого предупреждения об использовании Babel потребовать hook (require('babel-register')
) в производстве, хотя это, по-видимому, делает в значительной степени точно так же, как babel- node. Например, вы можете сделать node -r babel-register server.js
и получить то же поведение, что и babel-node server.js
. (Моя компания делает это именно в сотнях микросервисов, без проблем.)
Является ли Babel предупреждением только FUD, или я что-то упускаю? И если предупреждение действительно, почему он также не применим к Вавилону, требуется перехват?
Связанный: Можно ли использовать babel- node в производстве? - но этот вопрос просто спрашивает, рекомендуется ли использовать производство, а ответы просто цитируют официальный совет, т.е. "Нет". Напротив, я ставил под сомнение обоснование официального совета.