Trecerea variabile de mediu în NPM-script-uri

voturi
20

Am un package.json cu următorul conținut (simplificat) în cheie script-uri:

...
scripts: {
   start: NODE_ENV=${NODE_ENV:=production} node start-app.js,
   poststart: echo $NODE_ENV
}
...

Din linia de comandă pot rula:

npm start

Acest lucru va rula script - ul meu start-app.js și setați variabila de mediu process.env.NODE_ENV la „producție“. A se vedea aici pentru explicații de sintaxă.

Poststart va rula automat după pornirea așa cum este descris aici .

Cu toate acestea poststart nu va „moșteni“ variabila de mediu NODE_ENV shell, astfel încât comanda echo nu va ecou nimic.

Codul meu producation este un pic mai complex, dar ceea ce am încercat să realizeze este trecînd variabila NODE_ENV din „punctul de plecare“ pentru script-uri dependente. Orice sugestii / cele mai bune practici cu privire la modul de a face acest lucru?

I dont doresc să hardcode NODE_ENV în poststart, pentru că s-ar putea dori să fac:

NODE_ENV=development npm start

și vreau everyting „în jos lanțul de“ moștenesc același mediu.

Întrebat 10/05/2016 la 13:01
sursa de către utilizator
În alte limbi...                            


3 răspunsuri

voturi
13

Aveți câteva opțiuni:

  • mai bine-NPM-run , care poate defini o envpentru fiecare comandă separat
  • În loc de un poststartscript, poate înlănțui comenzi pentru NPM astfel:"start": "NODE_ENV=${NODE_ENV:=production} node start-app.js && echo $NODE_ENV"
  • Utilizați un manager de proces de producție cum ar fi PM2 . PM2 vă permite să definiți mediu fișiere specifice JSON cu setări , cum ar fi NODE_ENV. La firma noastra, vom rula cu succes toate aplicațiile noastre în diferite medii cu PM2 (toate având aceeași comandă de start)
Publicat 10/05/2016 la 13:49
sursa de către utilizator

voturi
0

Dacă aveți utilizarea de mici casetat, utilizați mai bine-NPM-run. Pentru cazuri mici, funcționează bine. Într -un fel , dacă aveți o mulțime de comenzi și gestiona greu. Încercați, batman-cli . Funcționează bine și să se ocupe de multe probleme dependente de mediu

npm i -G batman-cli

Publicat 08/10/2017 la 09:58
sursa de către utilizator

voturi
1

acest lucru este modul în care am făcut-o, în primul rând trebuie să instalați două dev-dependențe

https://www.npmjs.com/package/env-cmd sarcina dvs. env var din fișierul dvs.

https://www.npmjs.com/package/cross-env această variabilă mediu de utilizare în script

exemple de scripturi:

"env-cmd ./.config/prod.env cross-env-shell \"docker volume create $DOCKER_VOLUME\""

această sarcină $ DOCKER_VOLUME env var de la prod.env

Publicat 23/05/2019 la 19:21
sursa de către utilizator

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more