O que esta ferramenta faz
Um objeto JSON plano vira um arquivo .env, uma atribuição por linha.
{ "PORT": 3000, "NAME": "meu app", "DEBUG": true }
PORT=3000
NAME="meu app"
DEBUG=true
Os valores guardam seu texto: um número, um booleano e uma string com os mesmos caracteres saem iguais, porque um arquivo .env não contém senão texto.
Um nome que o leitor recusaria agora interrompe a conversão
Os nomes de variável são conferidos antes de qualquer escrita: letras, dígitos, _ e ., nunca um dígito à frente. minha chave e 2fa são recusados, com a chave culpada nomeada.
Isso merece ser dito sem rodeios, porque é um defeito que esta ferramenta tinha. Ela aceitava qualquer chave e a escrevia, de modo que {"minha chave": "1"} produzia:
minha chave=1
uma linha que o leitor .env deste mesmo site recusa, e que um shell também não tomaria por atribuição. Um conversor cuja saída o seu próprio inverso recusa é um conversor com defeito. Ele foi encontrado ao escrever esta página e corrigido.
Aspas só onde fazem falta
Um valor recebe aspas quando deixá-lo nu mudaria onde ele termina: contém espaço, um # que abriria um comentário, uma aspa ou uma barra invertida.
{ "GREETING": "olá a todos", "NOTE": "a # b" }
GREETING="olá a todos"
NOTE="a # b"
Entre aspas, uma quebra de linha real é escrita \n: uma variável cabe numa linha, e uma quebra no meio de um valor encerraria ali a atribuição.
O que um arquivo .env não consegue carregar
O aninhamento não cabe: {"db": {"host": "x"}} é recusado, com db nomeado, em vez de inventado como DB_HOST ou db.host. Qual dos dois seu aplicativo espera, o JSON não diz.
E null vira um valor vazio, KEY=, que é relido como string vazia. Essa distinção simplesmente não existe no formato — bom saber antes de contar com ela.
Privado por padrão
Tudo é executado localmente no seu navegador com JavaScript. Os seus dados nunca são enviados para um servidor, o que torna a ferramenta segura para conteúdo sensível e funciona offline.