Вы можете изменить файл точки входа, который в основном будет выполнять такую настройку, а затем потребует исходный основной файл.
process.env.NODE_ENV = 'production';
require('app.js');
Другой способ (более чистый) - использовать преобразование, например envify, которое заменяет ваш NODE_ENV в коде на строку значение напрямую.
Опция 1
Я думаю, что ваш подход в целом должен работать, но я бы не стал писать напрямую в process.env
, так как я почти уверен, что он будет перезаписан в комплекте. Вместо этого вы можете создать глобальную переменную, например __env
, а затем в фактическом коде пакета установить для нее значение process.env
в вашем файле ввода. Это непроверенное решение, но я считаю, что оно должно работать.
Вариант 2
Используйте localStorage и позвольте вашему основному сценарию читать оттуда переменные при инициализации. Вы можете установить переменные в localStorage вручную или даже позволить серверу предоставить их, если они у вас есть. Разработчик просто откроет консоль и наберет что-то вроде loadEnv('production')
, он сделает XHR и сохранит результат в localStorage. Даже при ручном подходе все еще есть преимущество, заключающееся в том, что их не нужно жестко кодировать в html.
Если руководство не звучит достаточно хорошо, а сервер тоже тупик, вы можете просто включить все переменные из всех сред (если они у вас где-то есть) в пакет, а затем использовать оператор switch
, чтобы выбрать правильные на основе некоторых условий (например, .localhost, производственный хост).
Думая об этом, вы определенно выходите за рамки Browserify с вашими потребностями. Он может сделать пакет для вас, но если вы не хотите, чтобы эта информация была в пакете, вы сами по себе.
person
FredyC
schedule
24.10.2014