Ce que fait cet outil
Un fichier .env devient un objet JSON plat.
# service
export PORT=8080
NAME="Ada Lovelace"
EMPTY=
{
"PORT": "8080",
"NAME": "Ada Lovelace",
"EMPTY": ""
}
Les lignes de commentaire et les lignes vides sont sautées, un export en tête est retiré, et les guillemets autour d’une valeur le sont avec lui. Entre guillemets doubles, \n et \t deviennent un saut de ligne et une tabulation ; entre guillemets simples, tout reste littéral, comme dans un shell.
Une variable posée deux fois est refusée
PORT=8080
PORT=3000
Duplicate variable "PORT" on line 2: it already has a different value
Un shell garde la dernière affectation et ne dit rien : la première valeur disparaissait simplement. Dans un .env fusionné, édité, recopié d’un environnement à l’autre, ce silence coûte cher : vous lisez le fichier, vous voyez PORT=8080 en haut, et le processus tourne sur 3000. L’outil s’arrête désormais et nomme la variable et la ligne. Deux affectations identiques ne sont l’aveu de rien, elles passent toujours. C’était un vrai défaut, trouvé en écrivant cette page puis corrigé.
Tout est chaîne
ID=007
ACTIVE=true
COUNT=3
{
"ID": "007",
"ACTIVE": "true",
"COUNT": "3"
}
Une variable d’environnement est du texte : c’est ce que le système stocke et ce que process.env rend. Typer COUNT en nombre ici serait une supposition, et typer ID en nombre lui coûterait ses zéros. La conversion garde le texte, et le typage reste là où le sens est connu — dans votre code.
Ce que le format ne porte pas
- Le développement.
PATH=$HOME/binreste$HOME/bin. Ce que vaut$HOMEdépend d’une machine que cette page ne voit pas. - L’imbrication.
.envest une liste plate de noms et de valeurs ; il n’y a ni sections ni structure à y trouver. - Un commentaire après une valeur entre guillemets.
A="a #b"garde son dièse, qui est à l’intérieur des guillemets. Après une valeur nue,#ouvre un commentaire et est coupé. - N’importe quel nom. Un nom est fait de lettres, de chiffres, de
_et de., et ne commence pas par un chiffre — la règle qu’applique le shell lui-même. Le reste est refusé en le nommant, plutôt qu’écrit dans un JSON qu’aucun.envne pourrait reprendre.
Confidentiel par conception
Tout s’exécute localement dans votre navigateur en JavaScript. Vos données ne sont jamais envoyées sur un serveur, ce qui rend l’outil sûr pour des contenus sensibles, et il fonctionne hors ligne.