100 % local — vos données ne quittent jamais votre navigateur

.env en JSON — des réglages que le code lit

Transformez un fichier .env en JSON. Guillemets, commentaires et export sont gérés : les réglages arrivent en objet, lisible par votre appli ou votre CI.

Instantané Privé Zéro cookie
Indentation

Entrée .env

Sortie JSON

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/bin reste $HOME/bin. Ce que vaut $HOME dépend d’une machine que cette page ne voit pas.
  • L’imbrication. .env est 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 .env ne 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.

Questions fréquentes

Pourquoi une variable posée deux fois est-elle refusée ?
Parce que l’une des deux valeurs disparaissait sans un mot. Un shell garde la dernière affectation, l’outil faisait de même — et un `.env` qui porte `PORT` ligne 3 puis ligne 40 signale d’ordinaire une fusion ratée, pas une décision. La conversion s’arrête maintenant et nomme la variable et la ligne. Répéter la même valeur ne change rien : cela passe.
Pourquoi `PORT=8080` est-il une chaîne dans le JSON ?
Parce qu’une variable d’environnement est du texte — c’est tout ce que le système d’exploitation retient. `8080`, `true` et `007` entrent en chaînes et ressortent en chaînes ; `process.env.PORT` en est une aussi. Un convertisseur qui les typerait déciderait à votre place, et transformerait au passage un identifiant à zéros en nombre.
`$HOME` est-il développé ?
Non. `PATH=$HOME/bin` vous rend la chaîne `$HOME/bin`, telle qu’écrite. Le développement est l’affaire du shell, il dépend d’un environnement que cette page ne voit pas, et le deviner mettrait dans votre JSON une valeur qui n’a jamais existé dans votre fichier.

Convertisseurs associés