Нижче наведено дуже хороший спосіб роботи із змінними середовища, які я успішно використовував:
A. Майте різні конфігураційні файли :
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
ПРИМІТКА . Назва продукту відрізняється від інших, оскільки використовується не всіма.
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).
Сподіваюся, що це допомагає.
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