Ce que fait cet outil
Un objet JSON plat devient un fichier .env, une affectation par ligne.
{ "PORT": 3000, "NAME": "mon appli", "DEBUG": true }
PORT=3000
NAME="mon appli"
DEBUG=true
Les valeurs gardent leur texte : un nombre, un booléen et une chaîne de mêmes caractères sortent pareils, parce qu’un fichier .env ne contient que du texte.
Un nom que le lecteur refuserait arrête maintenant la conversion
Les noms de variables sont vérifiés avant toute écriture : lettres, chiffres, _ et ., jamais un chiffre en tête. ma clé et 2fa sont refusés, avec la clé fautive nommée.
Cela mérite d’être dit franchement, car c’est un défaut qu’avait cet outil. Il acceptait n’importe quelle clé et l’écrivait, si bien que {"ma clé": "1"} produisait :
ma clé=1
une ligne que le lecteur .env de ce même site rejette, et qu’un shell ne prendrait pas non plus pour une affectation. Un convertisseur dont la sortie est refusée par son propre inverse est un convertisseur bogué. Le défaut a été trouvé en écrivant cette page, puis corrigé.
Des guillemets seulement là où il en faut
Une valeur est citée quand la laisser nue changerait l’endroit où elle s’arrête : elle contient une espace, un # qui ouvrirait un commentaire, un guillemet ou un backslash.
{ "GREETING": "bonjour tout le monde", "NOTE": "a # b" }
GREETING="bonjour tout le monde"
NOTE="a # b"
Entre guillemets, un vrai saut de ligne s’écrit \n : une variable tient sur une ligne, et un retour au milieu d’une valeur y terminerait l’affectation.
Ce qu’un fichier .env ne peut pas contenir
L’imbrication n’y a pas sa place : {"db": {"host": "x"}} est refusé, avec db nommé, plutôt qu’inventé en DB_HOST ou db.host. Lequel des deux votre application attend, le JSON ne le dit pas.
Et null devient une valeur vide, KEY=, qui se relit en chaîne vide. Cette distinction est tout simplement absente du format — à savoir avant de compter dessus.
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.