Format du fichier .env : les règles de syntaxe qui piègent tout le monde

Guide du format de fichier .env

Format du fichier .env : syntaxe, guillemets, commentaires | We.Inc

Les règles de syntaxe du fichier .env pour les guillemets, les commentaires, les valeurs vides et les clés multilignes, les points où dotenv et Docker Compose divergent, plus un linter dans lequel coller votre fichier.

Un fichier .env est du texte brut avec une paire KEY=value par ligne. Les lignes vides sont ignorées et les lignes commençant par # sont des commentaires. Mettez une valeur entre guillemets quand elle contient des espaces aux extrémités, un signe # ou des retours à la ligne. Il n'existe pas de norme unique : dotenv pour Node et Docker Compose interprètent donc quelques cas limites différemment.

Comment dotenv lit les lignes courantes

La plupart des fichiers .env cassés échouent sur la même poignée de détails : un # dans un mot de passe, une clé privée collée sur plusieurs lignes ou un guillemet jamais refermé. Collez votre fichier dans le linter pour voir ce que dotenv lirait pour chaque clé, et où Docker Compose le lirait autrement.

Questions fréquentes

Existe-t-il une spécification officielle du fichier .env ?

Non. Le format est issu des affectations de variables du shell et chaque outil de chargement documente ses propres règles. Le package dotenv pour Node et Docker Compose publient chacun les leurs, et ils s'accordent sur l'essentiel : des lignes KEY=value, des commentaires # et des valeurs entre guillemets.

Faut-il mettre les valeurs entre guillemets dans un fichier .env ?

Seulement quand c'est nécessaire. Les guillemets sont obligatoires pour les valeurs contenant un signe #, des espaces au début ou à la fin, ou des retours à la ligne. Utilisez des guillemets simples dans Compose si vous voulez qu'un $ reste littéral, car les valeurs entre guillemets simples n'y sont pas interpolées.

Comment écrire une valeur multiligne comme une clé privée ?

Entourez-la de guillemets doubles et gardez les vrais retours à la ligne, ce que dotenv prend en charge depuis la version 15.0.0. Vous pouvez aussi la garder sur une ligne et écrire \n à chaque saut, puisque les valeurs entre guillemets doubles transforment \n en retour à la ligne.

Peut-on mettre un commentaire en fin de ligne ?

Oui, avec prudence. dotenv considère un # sans guillemets comme le début d'un commentaire. Docker Compose ne le fait que si un espace précède le #, donc KEY=a#b donne a#b dans Compose mais a dans dotenv. Laissez un espace avant les commentaires en ligne pour être tranquille.

dotenv écrase-t-il les variables déjà définies ?

Non. Par défaut, dotenv ne modifie jamais une variable qui existe déjà dans l'environnement : une valeur définie par votre shell ou votre hébergeur l'emporte. Passez l'option override à true si vous voulez que le fichier les remplace.

Là où dotenv et Docker Compose divergent

Sécuriser vos fichiers .env

dotenv et Docker Compose côte à côte

La même ligne lue par deux outils de chargement

Exemples à copier

Un .env.example bien rangé

Les mêmes clés que le vrai fichier, des valeurs fictives sans risque, des commentaires qui expliquent chaque groupe. Commitez celui-ci, jamais le vrai .env.

Le charger dans Node

config() lit par défaut le .env du répertoire de travail courant. Les valeurs déjà présentes dans l'environnement restent inchangées.

Linter .env

Collez votre fichier .env

Ce que dotenv lit sur chaque ligne

Ligne

Clé

Valeur

Notes

(chaîne vide)

{n} clés lues, dont {v} avec des notes

Aucune clé trouvée pour l'instant.

Pas de signe =, cette ligne est donc ignorée.

La clé contient un espace. Supprimez-le, sinon la ligne ne sera pas lue comme prévu.

Nom non portable. Les shells attendent des lettres, chiffres et underscores, sans chiffre au début.

Le guillemet n'est jamais refermé : le reste du fichier risque d'être absorbé dans cette valeur.

Aussi définie à la ligne {n}. Gardez-en une seule pour que personne n'ait à deviner laquelle l'emporte.

dotenv s'arrête au #, mais Docker Compose le conserve car aucun espace ne le précède. Mettez la valeur entre guillemets.

Contient $. Docker Compose l'interprète ; dotenv seul le garde tel quel.

S'étend sur plusieurs lignes entre guillemets.

Commencer gratuitement · Sans carte bancaire

Voir aussi: Guides

Produit

Pour qui

Fonctionnalités

Ressources

Entreprise

Plan du site