Ho un package.json con i seguenti contenuti (semplificato) negli script chiave:variabili d'ambiente passando NPM-script
...
scripts: {
"start": "NODE_ENV=${NODE_ENV:=production} node start-app.js",
"poststart": "echo $NODE_ENV"
}
...
Dalla riga di comando posso correre:
npm start
Questo eseguirà il mio script start-app.js e imposteremo la variabile di ambiente process.env.NODE_ENV su "produzione". Vedere here per la spiegazione della sintassi.
Il poststart verrà eseguito automaticamente dopo l'avvio come descritto in here.
Tuttavia poststart non "erediterà" la variabile di ambiente della shell NODE_ENV, quindi il comando echo non eseguirà alcun eco.
Il mio codice di produzione è un po 'più complesso, ma quello che sto cercando di ottenere è passare la variabile NODE_ENV dal "punto di partenza" agli script dipendenti. Qualche suggerimento/miglior pratica su come farlo?
Non voglio hardcode il NODE_ENV nel poststart, perché potrei voler fare:
NODE_ENV=development npm start
e voglio everyting "valle della catena" ereditano lo stesso ambiente.
Da [quello che vedo] (https://docs.npmjs.com/misc/scripts), campi _he package.json sono attaccato al prefisso npm_package_, quindi si potrebbe voler dire 'npm_package_node_env'. – fedorqui
Quando si eseguono più comandi, è necessario "esportare" la variabile. 'export NODE_ENV = something' – Michael