Utiliser des fichiers de configuration dans une application Node.js avec dotenv

Une des tâches habituelles lors du développement d'un site ou d'une application est de stocker des configurations qui dépendent de l'environnement sur lequel l'application va tourner (comme l'URI de la base de données) et/ou qui sont secrètes et ne doivent pas être publiées dans le repository (comme les clés secrètes d'APIs tierces).

Dans une application Node.js, une technique peut être de créer un fichier de configuration config.js dans lequel on exporte les variables concernées et de ne pas l'ajouter à votre système de versionnement. Personnellement je préfère que ce genre de données ne soient pas dans des fichiers javascript mais plutôt dans un simple fichier texte contenant des paires clé/valeur. La configuration dépendante de l'environnement n'a rien à faire dans le code.

C'est là que la librairie dotenv brille par sa simplicité et sa légèreté (elle n'a aucune dépendance).

Utilisation de dotenv

Installez la dépendance à dotenv à votre projet Node.js.

$ npm install dotenv --save

A la racine de votre projet créez un fichier .env dans lequel vous mettrez vos configurations sous la forme suivante :

KEY=VALUE
SQL_USER=USER
SQL_PASSWORD=PASSWORD

Ensuite, le plus tôt possible dans votre application, exécutez la commande suivante :

require('dotenv').config();

Une fois que cette ligne aura été exécutée vous aurez accès à vos variables de configuration n'importe où dans votre application comme ceci :

const sqlUser = process.env.SQL_USER;
const sqlPassword = process.env.SQL_PASSWORD;

Bref, c'est facile, ça mange pas de pain et c'est super utile.

Attention à votre système de versionnement

Attention ! Si vous utilisez un système de versionnement comme Git ou Subversion vous ne devez ABSOLUMENT PAS commit votre fichier .env ! Pour Git pensez-bien à l'ajouter à votre .gitignore et pour Subversion... attendez il y a encore des gens qui utilisent SVN ? :)

Il est tout de même utile de garder une trace de toutes les variables d'environnement à créer pour pouvoir lancer rapidement l'application après avoir cloné le repository.
Ma solution favorite est de créer un fichier .env.sample aux côtés de .env (à la racine du projet donc) et de le commit. Dans ce fichier je met la même chose que dans .env... sans les valeurs des variables !

KEY=
SQL_USER=
SQL_PASSWORD=


Strasbourg, France

Ingénieur en informatique chez Sully Group.