Qué hace esta herramienta
Un objeto JSON plano pasa a ser un archivo .env, una asignación por línea.
{ "PORT": 3000, "NAME": "mi app", "DEBUG": true }
PORT=3000
NAME="mi app"
DEBUG=true
Los valores conservan su texto: un número, un booleano y una cadena con los mismos caracteres salen igual, porque un archivo .env no contiene más que texto.
Un nombre que el lector rechazaría ahora detiene la conversión
Los nombres de variable se comprueban antes de escribir nada: letras, dígitos, _ y ., nunca un dígito al principio. mi clave y 2fa se rechazan, con la clave culpable nombrada.
Merece decirse sin rodeos, porque es un defecto que esta herramienta tenía. Aceptaba cualquier clave y la escribía, de modo que {"mi clave": "1"} producía:
mi clave=1
una línea que el lector .env de este mismo sitio rechaza, y que un shell tampoco tomaría por una asignación. Un conversor cuya salida rechaza su propio inverso es un conversor con un fallo. Se encontró al escribir esta página y se corrigió.
Comillas solo donde hacen falta
Un valor se entrecomilla cuando dejarlo desnudo cambiaría dónde termina: contiene un espacio, una # que abriría un comentario, una comilla o una barra invertida.
{ "GREETING": "hola a todos", "NOTE": "a # b" }
GREETING="hola a todos"
NOTE="a # b"
Entre comillas, un salto de línea real se escribe \n: una variable ocupa una línea, y un salto en medio de un valor terminaría allí la asignación.
Lo que un archivo .env no puede contener
El anidamiento no cabe: {"db": {"host": "x"}} se rechaza, con db nombrado, en vez de inventarse como DB_HOST o db.host. Cuál de los dos espera tu aplicación no lo dice el JSON.
Y null pasa a valor vacío, KEY=, que se relee como cadena vacía. Esa distinción sencillamente no existe en el formato, conviene saberlo antes de apoyarse en ella.
Privado por diseño
Todo se ejecuta localmente en tu navegador con JavaScript. Tus datos nunca se suben a un servidor, lo que hace que la herramienta sea segura para contenido sensible y funcione sin conexión.