Comment utiliser un fichier d'environnement en Node.JS ?
Vendredi 05 Mai 2023 08:30

Comment utiliser un fichier d'environnement en Node.JS ?

Votre application peut avoir des informations de configuration différentes pour l'environnement de développement local, l'environnement de test et l'environnement de production,... Il vous faut donc une manière simple de pouvoir gérer ces valeurs sans devoir les encoder directement dans votre script.

Les fichiers .env sont là pour ça !

Un fichier ?

Les fichiers d'environnement sont généralement écrits sous forme de fichier texte avec chaque variable d'environnement stockée de cette façon:

NOM_VARIABLE=VALEUR_VARIABLE

On oublie pas de ne pas commit ces fichiers car ils contiennent généralement des données sensibles tels que des accès dbs ou des clés d’api.

Dépendance

Nous allons nous baser sur la dépendance suivante: https://www.npmjs.com/package/dotenv

Pour l’installer rien de bien compliqué:

npm install dotenv

Initialisation

Je vous conseille de commencer par l’initialisation de dotenv avant tout autre dépendance.

const dotenv = require('dotenv').config();

Et… c’est tout, vos variables sont accessibles.

Récupérer la valeur d’une variable

Pour récupérer vos variables, rien de plus simple:

process.env.NOM_VARIABLE

De ce que j’ai pu tester, vous pouvez y accéder depuis n’importe quel methode de votre script.

Amélioration

Petite sécurité qui ne mange pas de pain, je vous conseille d’ajouter au début de votre script cette petite condition afin de vous assurer que tout est en ordre.

const dotenv = require('dotenv').config();
// Import des autres dependances…

if (dotenv.error) {
    throw dotenv.error
}

.env.custom

Il est également possible de créer des fichiers .env par environnement. Vous pouvez par exemple avoir .env qui contient la liste des variables et ensuite avoir un .env.locale et un .env.prod contenant la structure présente dans le .env mais avec leurs valeurs.

Malheureusement pas de système d’héritage comme l’on connait dans symfony. Ici on ne charge qu’un seul fichier.

Il faut donc spécifier le fichier que l’on souhaite lire:

require('dotenv').config({ path: '.env.local' });

Pas génial, mais ça existe.