Vous êtes sur la page 1sur 6

Dans cet article, nous allons voir comment gérer des variables d’environnement dans un

projet Node.js.

Admettons que vous souhaitez démarrer votre projet avec deux modes :

Mode développement
Mode production

Ces deux modes ne vont pas avoir les mêmes paramètres. Ils utiliseront les mêmes
variables d’environnement, mais avec des valeurs différentes.

Par exemple, le mode de développement pourrait utiliser une variable d’environnement


API_URL avec comme valeur 127.0.0.1, tandis qu’avec le mode de production cette même
variable d’environnement API_URL serait égale à une autre valeur (par exemple, 8.8.8.8).

Alors, comment initialiser une nouvelle variable d’environnement et lui attribuer une valeur
en fonction de notre mode ?

Nous allons voir tout ça. 😎


Initialiser un projet
Commencez par créer un nouveau projet :

npm init -y

Puis créez un nouveau fichier index.js :

touch index.js
Dans ce fichier, insérez un simple console.log :

console.log("Hello World!");

Modifiez le fichier package.json afin de lancer le projet avec un raccourci :

"scripts": {

"start": "node index.js"

},

Vous pouvez maintenant exécuter votre projet, avec la commande suivante :

npm run start

Vous devriez avoir « Hello World! » dans votre console. Parfait ! 🎉

Les variables d’environnement


Avec Node.js vous pouvez accéder et utiliser la propriété process.env qui contient les
variables d’environnement de l’utilisateur.

Dans le fichier index.js, ajoutez la ligne suivante et relancez le serveur :

console.log(process.env);

Vous avez tout de suite plus de choses dans votre console ! 😊


Gérer les variables d’environnement
Pour gérer les variables d’environnement, vous avez plusieurs packages qui permettent
de les manipuler, comme dotenv. Ici nous allons utiliser le package env-cmd. 😉
env-cmd

Commencez par installer env-cmd et ajoutez le package dans les devDependencies :


npm install env-cmd --save-dev

Ce qui est intéressant avec env-cmd, c’est qu’au lancement de votre projet, vous allez
pouvoir lui fournir un fichier à utiliser avec vos variables d’environnement déclarées à
l’intérieur. 👌
Commencez par créer à la racine de votre projet un dossier env. Puis à l’intérieur, créez
trois fichiers :

.env
.env.dev
.env.prod

Le .env servira de template, de référence. Les autres développeurs pourront voir par la
suite les variables d’environnement déclarées dans votre projet.

Sur un « vrai » projet et non un boilerplate c’est UNIQUEMENT ce fichier qui doit
être commité. Les autres fichiers .env.dev et .env.prod ne doivent jamais
être commité ! Question de sécurité.

Créez les fichiers :

mkdir env

cd env

touch .env

touch .env.dev

touch .env.prod

Vous pouvez maintenant définir les variables d’environnement dans ces fichiers.

.env :

NODE_ENV=template

APP_NAME=My App

API_URL=127.0.0.1

.env.dev :

NODE_ENV=development

APP_NAME=My App
API_URL=127.0.0.1

.env.prod :

NODE_ENV=production

APP_NAME=My App

API_URL=8.8.8.8

Il ne vous reste plus qu’à charger ces fichiers au démarrage de votre application.

Pour cela, modifiez la section start du package.json :

"scripts": {

"dev": "env-cmd -f ./env/.env.dev node index.js",

"prod": "env-cmd -f ./env/.env.prod node index.js"

},

Pour démarrer votre projet, vous utiliserez maintenant les commandes suivantes :

pour le mode développement : 

npm run dev

pour le mode production : 

npm run prod

Faites le test : mettez à jour votre fichier index.js avec ces lignes :

console.log(${process.env.APP_NAME})

console.log(Ready on ${process.env.NODE_ENV} mode)

console.log(API : ${process.env.API_URL})

Puis lancez votre projet en mode développement 

npm run dev

. Vous devriez avoir ça :


En mode production 

npm run prod

 :

Parfait ! Vous pouvez maintenant gérer vos variables d’environnement avec un fichier.

Attention : je le répète, ne jamais ajouter vos fichiers de variables


d’environnement dans un commit !

Le mieux reste de déclarer ces variables d’environnement directement sur le serveur et


😉
non dans des fichiers. Question de sécurité, toujours ! 

Retrouvez le boilerplate sur Github :

Vous aimerez peut-être aussi