NODE_ENV=production sous Windows

Pour définir l'environnement dans lequel doit s'exécuter votre application Node.js, il suffirait de taper dans une console ouverte à l'endroit où se trouve votre appplication node

set NODE_ENV=production  

C'est malheureusement sans effet sur certains postes Windows.
La solution est alors d'ajouter deux petits scripts dans votre package.json

"scripts": {  
    "start_win_prod": "set NODE_ENV=production&&node index.js",
    "start_win_dev": "set NODE_ENV=development&&node index.js"
}

puis de lancer l'un ou l'autre

npm run start_win_dev  

ou bien

npm run start_win_prod

Bien évidemment, en production, vous seriez sur un poste Linux. Mais ces commandes vous permettent de faire des tests sur un poste de développement qui serait sour Windows.

Avec nodemon

Et si vous utilisez nodemon pour le redémarrage automatique de votre serveur après une modification de fichier

"scripts": {  
    "start_win_prod": "set NODE_ENV=production&&nodemon index.js",
    "start_win_dev": "set NODE_ENV=development&&nodemon index.js"
}

Le package "cross-env"

Si vous souhaitez utiliser la même commande tant sous Windows, qui utilise "set"

set NODE_ENV=development  

que sous Linux (et Mac) qui utilise "export"

export NODE_ENV=development  

vous pouvez utiliser le package npm "cross-env"

npm i --save-dev cross-env  
cross-env NODE_ENV=production nodemon index.js