Существует несколько сообщений в блоге, в которых объясняется, почему переход от ворчания или gulp к зданию с помощью простой npm является хорошей идеей, например, такой: Cory Hourse или этот Keith Cirkle. Одно из этих сообщений в блоге не объясняет, как я могу легко выполнить настройку среды. Например, общее требование состоит в том, чтобы иметь разные местоположения REST API. Во время разработки сервер может работать на localhost:8080
, но при его производстве он должен получить доступ через относительный URL-адрес, такой как /api
или /rest/api
, и порт или протокол отличаются для разработки и производства.Конфигурация окружения при времени сборки с npm
Для этого есть несколько решений. Например, grunt поддерживает шаблонные строки, такие как <% %>
и <%= %>
, а также есть плагины для ворчания или gulp, как в этом вопросе о grunt-ng-config. Эти решения являются специфическими для Angular (которые я использую), но мне не нужно искать решение AngularJS.
Я также знаю плагин angular-environment
, но, насколько я вижу, это делает конфигурацию во время выполнения, и я ищу что-то, что может это сделать во время сборки.
Так что я ищу, это то, что позволяет мне настроить мое приложение во время сборки либо путем замены некоторых строк шаблонов, либо путем создания файла Javascript с некоторыми переменными, которые я могу прочитать во время выполнения.
Обязательным условием является то, что он должен быть независимым от ОС. Поэтому я не хочу использовать специальные инструменты UNIX, такие как sed
для перезаписи файла. И из-за разного расширения переменной (например, %
против $
) решение не должно полагаться на переменные среды.
Есть ли существующее решение или передовая практика для этого?
Насколько я могу судить, переменные среды зависят от платформы, поэтому '%' на окнах (пакетной) и $ на Unix (bash). У вас есть предложение, как это решить? Предложение с нефритом выглядит интересным, я посмотрю, смогу ли я его использовать. – lanoxx
Handlebars также хорош для серверной части, я верю, и вы можете использовать ее в формате HTML – danday74
.% И $ thing, вы имеете в виду чтение варов? Не можете ли вы просто использовать process.env.envvarname, чтобы читать их, где envvarname - это имя var? – danday74