Node 02 - đ°ïž Utiliser un fichier .env
Objectifs
- Comprendre le concept d'environnement.
- Utiliser un fichier
.envavec la commandenode.
Pré-requis
- 1
Valider la quĂȘte suivante
QuĂȘtes liĂ©es
Introduction
Les fichiers .env sont des fichiers de configuration utilisés pour stocker des variables d'environnement dans un format simple, lisible et facile à gérer. Ils sont largement utilisés dans les applications modernes, en particulier dans les projets basés sur des frameworks comme Node.js, Django, Laravel, et bien d'autres.
Sommaire
Variables d'environnement ?
Les variables d'environnement sont des variables qui sont définies dans le systÚme d'exploitation ou dans le conteneur dans lequel l'application est exécutée.
Les variables d'environnement remplissent plusieurs rĂŽles :
- Configuration dynamique : Les variables permettent d'adapter une application à différents environnements (développement, test, production).
- Sécurité : Elles permettent de stocker des informations sensibles hors du code source.
- PortabilitĂ© : En les utilisant, tu peux facilement dĂ©ployer la mĂȘme application sur plusieurs systĂšmes (Linux, macOS, Windows) en modifiant uniquement les valeurs des variables d'environnement.
En pratique
Une variable d'environnement, comme une variable en JavaScript, est un nom associĂ© Ă une valeur. Par convention, le nom doit ĂȘtre en majuscule :
MY_VARIABLE=Hello_world
Pour créer une variable d'environnement temporaire, tu peux la définir avant d'exécuter la commande node.
Ouvre un terminal et tape :
MESSAGE=Hello_World node
La syntaxe est différente selon l'interface en ligne de commande que tu utilises sur Windows.
Avec PowerShell, ouvre un terminal et tape :
$env:MESSAGE="Hello_World" node
Avec CMD ouvre un terminal et tape :
set MESSAGE="Hello_World" node
Ici, une session node est démarrée avec la variable d'environnement MESSAGE contenant Hello_World.
Si tu tapes console.log(process.env.MESSAGE), tu devrais voir Hello_World :

(Utilise la commande .exit pour quitter la session node)
Utiliser un fichier .env
Définir les variables d'environnement lors du lancement de l'application comme dans l'exemple précédent n'est pas trÚs pratique. Imagine si ton application nécessite plusieurs variables !
C'est lĂ que les fichiers .env interviennent.
Un fichier .env est un fichier texte contenant des paires clĂ©-valeur qui dĂ©finissent des variables d'environnement pour une application. Ces variables peuvent ĂȘtre des informations sensibles ou spĂ©cifiques Ă un environnement, telles que :
- Les clés d'API
- Les URL des bases de données
- Les configurations spécifiques à l'environnement (développement, production, etc.)
Un fichier .env dans un projet réel pourrait ressembler à ça :
# Configuration de la base de données
DB_HOST=localhost
DB_PORT=5432
DB_USER=admin
DB_PASSWORD=secret
# Clés API
API_KEY=abcd1234xyz
Tu peux en créer un simple avec cette commande :
echo "MESSAGE=Hello_World" > .env
ContrĂŽle ensuite le contenu du fichier .env avec la commande cat :

L'utilisation d'un fichier .env dĂ©pend du langage ou du framework que tu utilises. Avec la commande node tu peux utiliser l'option --env-file= suivi du chemin vers ton fichier. Toujours dans le mĂȘme rĂ©pertoire :
node --env-file=.env
Tu peux maintenant afficher le contenu de process.env.MESSAGE avec un console.log :

(Utilise la commande .exit pour quitter la session node)
AccĂ©der aux variables via process.env marche Ă©galement depuis un fichier .js exĂ©cutĂ© avec node. Par exemple, si tu crĂ©es un fichier index.js avec ce code (dans le mĂȘme dossier que ton fichier .env) :
console.log(process.env.MESSAGE);
Tu peux l'exécuter avec la commande node et l'option --env-file :

L'option --env-file est relativement rĂ©cente. Tu entendras peut-ĂȘtre parler du module dotenv en discutant avec des devs : c'Ă©tait la rĂ©fĂ©rĂ©nce pour utiliser un fichier .env avant l'ajout de l'option --env-file Ă la commande node.
Bonnes pratiques
â ïž Ne publie jamais d'informations sensibles ! â ïž
Le fichier .env doit TOUJOURS ĂȘtre ajoutĂ© dans le fichier .gitignore afin de ne pas partager des donnĂ©es sensibles via un dĂ©pĂŽt public (sur GitHub par exemple) !
# .gitignore
node_modules/
.env
Cependant, tu devrais mettre dans le dépÎt un fichier d'exemple avec des valeurs fictives (appelé .env.sample par convention), permettant de savoir quels paramÚtres sont nécessaires pour que l'application fonctionne. N'importe qui pourra ensuite créer localement son propre .env à partir de cet exemple.
# .env.sample file
# Configuration de la base de données
DB_HOST=localhost
DB_PORT=5432
DB_USER=YOUR_DB_USER
DB_PASSWORD=YOUR_DB_PASSWORD
# Clés API
API_KEY=YOUR_SECRET_API_KEY
Résumé
- Les paramĂštres qui dĂ©pendent de l'environnement doivent ĂȘtre stockĂ©s dans un fichier
.env, sous la formeKEY=valeur(une paire clé-valeur par ligne). - Ce fichier est passé à la commande
nodeavec l'option--env-file. - Les variables sont ensuite accessibles dans l'application, via
process.env.KEY(remplaceKEYpar le nom de ta variable). - Le fichier
.envne doit pas ĂȘtre versionnĂ© avec Git (utilise .gitgnore).
Challenge
Crée une petite application JavaScript qui va afficher ce message :
I am <name>, wilder in <city>, and I love <language>.
Les valeurs <name>, <city> et <language> doivent ĂȘtre remplacĂ©es par des variables d'environnement MY_NAME, MY_CITY et MY_LANGUAGE.
Ces variables doivent ĂȘtre chargĂ©es depuis un fichier .env.
Afin de ne pas le partager, écris un "modÚle" .env.sample : il doit indiquer les différentes paires clé-valeur à saisir dans le .env avec des valeurs fictives.
Partage ta solution sur un dépÎt GitHub contenant :
- Le code JavaScript
- Le fichier
.env.sample. - Le fichier
.gitignore.
CritĂšres de validation
- [ ] L'application utilise les variables d'environnement.
- [ ] Le fichier
.env.samplefournit un exemple de ce Ă quoi le fichier.envdevrait ressembler.
Ce que tu devrais avoir dans :
console.log(
`I am ${process.env.MY_NAME}, wilder in ${process.env.MY_CITY}, and I love ${process.env.MY_LANGUAGE}`
);
.env
MY_NAME=Bob
MY_CITY=Paris
MY_LANGUAGE=Javascript