Bardzo dobry sposób wykonywania zmiennych środowiskowych, których z powodzeniem używałem, jest poniżej:
A. Mają różne pliki konfiguracyjne :
dev.js // to ma wszystkie zmienne środowiskowe tylko do programowania
Plik zawiera:
module.exports = {
ENV: 'dev',
someEnvKey1 : 'some DEV Value1',
someEnvKey2 : 'some DEV Value2'
};
stage.js // ma to wszystkie zmienne środowiskowe tylko do programowania
..
qa.js // zawiera wszystkie zmienne środowiskowe przeznaczone wyłącznie do testowania qa
Plik zawiera:
module.exports = {
ENV: 'dev',
someEnvKey1 : 'some QA Value1',
someEnvKey2 : 'some QA Value2'
};
UWAGA : wartości zmieniają się głównie w środowisku, ale klucze pozostają takie same.
możesz mieć więcej
z__prod.js // ma to wszystkie zmienne środowiskowe tylko do produkcji / na żywo
UWAGA: Ten plik nigdy nie jest dołączany do wdrożenia
Umieść wszystkie te pliki konfiguracyjne w folderze / config /
<projectRoot>/config/dev.js
<projectRoot>/config/qa.js
<projectRoot>/config/z__prod.js
<projectRoot>/setenv.js
<projectRoot>/setenv.bat
<projectRoot>/setenv.sh
UWAGA : Nazwa prod jest inna niż inne, ponieważ nie byłaby używana przez wszystkich.
B. Ustaw zmienne środowiskowe OS / Lambda / AzureFunction / GoogleCloudFunction z pliku konfiguracyjnego
Teraz idealnie te zmienne konfiguracyjne w pliku powinny być zmienne środowiskowe systemu operacyjnego (lub zmienne funkcyjne LAMBDA lub zmienne funkcyjne platformy Azure, funkcje Google Cloud itp.)
więc piszemy automatyzację w systemie operacyjnym Windows (lub innym)
Załóżmy, że piszemy plik nietoperza „ setenv ”, który przyjmuje jeden argument, którym jest środowisko, które chcemy ustawić
Teraz uruchom „ setenv dev ”
a) Pobiera dane wejściowe z przekazanej zmiennej argumentu (na razie „dev”)
b) odczytuje odpowiedni plik („config \ dev.js”)
c) ustawia zmienne środowiskowe w systemie operacyjnym Windows (lub innym)
Na przykład,
Zawartość setenv.bat może być:
node setenv.js
Zawartość pliku setenv.js może być:
// import "process.env.ENV".js file (dev.js example)
// loop the imported file contents
// set the environment variables in Windows OS (or, Lambda, etc.)
To wszystko , twoje środowisko jest gotowe do użycia.
Kiedy wykonasz ' setenv qa ', wszystkie zmienne środowiskowe qa będą gotowe do użycia z qa.js i gotowe do użycia przez ten sam program (który zawsze prosi o process.env.someEnvKey1, ale otrzymywana wartość to qa one).
Mam nadzieję, że to pomaga.
fish
zamiastbash
, trzeba użyć:env USER_ID=239482 my_command
. Na przykład, do ustawiania zmiennych środowiskowych dla node.js'debug
biblioteki:env DEBUG='*' node some_file.js
fishshell.com/docs/current/faq.html#faq-single-env