À quoi sert NODE_ENV ?

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.

Mais cela ne touche pas qu’Express, beaucoup de paquets l’utilisent comme sails qui lui fait de la compression, du caching, de la minification….

Ou encore le gestionnaire de paquet lui-même, npm permet d’exécuter des commandes sans spécifier l’argument --production comme :

npm install --production

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 :

  1. Ajouter la variable avant la ligne de commande (NODE_ENV=production node index.js).
  2. 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).
  3. Utiliser un .env (Check dotenv).

Laisser un commentaire