Очень хороший способ сделать переменные окружения, которые я успешно использовал, ниже:
А. Иметь разные конфигурационные файлы :
dev.js // здесь есть все переменные окружения только для разработки
. Файл содержит:
module.exports = {
ENV: 'dev',
someEnvKey1 : 'some DEV Value1',
someEnvKey2 : 'some DEV Value2'
};
stage.js // здесь есть все переменные среды только для разработки
..
qa.js // здесь есть все переменные окружения только для тестирования qa
Файл содержит:
module.exports = {
ENV: 'dev',
someEnvKey1 : 'some QA Value1',
someEnvKey2 : 'some QA Value2'
};
ПРИМЕЧАНИЕ : значения в основном меняются в зависимости от среды, но ключи остаются прежними.
ты можешь иметь больше
z__prod.js // здесь есть все переменные среды только для производства / реального времени
ПРИМЕЧАНИЕ. Этот файл никогда не связывается для развертывания
Поместите все эти файлы конфигурации в папку / config /
<projectRoot>/config/dev.js
<projectRoot>/config/qa.js
<projectRoot>/config/z__prod.js
<projectRoot>/setenv.js
<projectRoot>/setenv.bat
<projectRoot>/setenv.sh
ПРИМЕЧАНИЕ . Название prod отличается от других, так как оно будет использоваться не всеми.
B. Установите переменные среды OS / Lambda / AzureFunction / GoogleCloudFunction из файла конфигурации
Теперь в идеале эти переменные конфигурации в файле должны идти как переменные среды ОС (или переменные функции LAMBDA, или переменные функции Azure, функции Google Cloud и т. Д.)
Итак, мы пишем автоматизацию в ОС Windows (или другой)
Предположим, мы пишем bat-файл « setenv », который принимает один аргумент, то есть среду, которую мы хотим установить
Теперь запустите " Setenv Dev "
a) Он принимает входные данные из переданной аргументной переменной (пока 'dev')
b) читает соответствующий файл ('config \ dev.js')
c) устанавливает переменные среды в ОС Windows (или другой)
Например,
Содержимое setenv.bat может быть:
node setenv.js
Содержимое setenv.js может быть:
// import "process.env.ENV".js file (dev.js example)
// loop the imported file contents
// set the environment variables in Windows OS (or, Lambda, etc.)
Вот и все , ваша среда готова к использованию.
Когда вы делаете ' setenv qa ', все переменные окружения qa будут готовы к использованию из qa.js и готовы к использованию одной и той же программой (которая всегда запрашивает process.env.someEnvKey1, но полученное значение - qa one).
Надеюсь, это поможет.
fish
вместоbash
, вы должны использовать:env USER_ID=239482 my_command
. Например, для установки переменных среды дляdebug
библиотеки node.js :env DEBUG='*' node some_file.js
fishshell.com/docs/current/faq.html#faq-single-env