On voit souvent cette variable d’environnement être utilisé sur des tutoriels, formations ou encore des projets en entreprise, mais pourquoi est-elle là ?
Donc tout d’abord, non tout le monde ne se copie pas ou encore ils n’ont pas de connexion cérébrale qui fait que les gens nomment cette variable pareille sans en être conscient (un peu chelou 😉).
Non cette variable est utilisée parce qu’elle change le fonctionnement de certains paquets / librairie.
Elle a été démocratiser par le paquet Express
qui l’utilise pour différencier la partie développement de la partie production.
Lorsque NODE_ENV est sur “production”, Express
:
- Mets en cache les modèles d’affichage.
- Mets en cache les fichiers CSS générés à partir d’extensions CSS.
- Génère des messages d’erreur plus concis.
Dans ce cas, si vous faites un npm install
avec NODE_ENV=production
, les paquets de développement devDependencies
seront ignorés.
Par défaut, si cette variable n’est pas spécifiée dans votre projet, elle est définie sur “development”.
Vous pouvez vous-même utiliser cette variable dans votre projet pour mettre en cache des fichiers ou afficher des messages d’erreur. (Toutes les variables d’environnement se trouvent dans process.env).
if (process.env.NODE_ENV === "production") { sendErrorEmail("..."); } if (process.env.NODE_ENV === "development") { console.error("..."); }
Mais je ne vous conseille pas de l’utiliser avec d’autre nom comme staging
, cela peut avoir un comportement non-défini sur les librairies externe et sur le gestionnaire de paquet npm
.
Je vous conseille d’utiliser une autre variable pour ça. (Ne pas oublier d’utiliser NODE_ENV aussi dans ce cas-ci).
if (["production", "staging"].includes(process.env.NODE_STAGE)) { sendErrorEmail("..."); }
Il y a plusieurs façons d’administrer cette variable :
- Ajouter la variable avant la ligne de commande (
NODE_ENV=production node index.js
). - Ajouter la variable dans l’environnement global ou modifier votre
bash_profile
qui se trouve à la racine de votre espace documentaire (Cela permet d’être protégé sur les redémarrages) (export NODE_ENV=production
). - Utiliser un
.env
(Check dotenv).