Verificação prévia de portabilidade de .env

Cole o conteúdo de um arquivo .env e veja quais valores seriam interpretados de forma diferente — ou falhariam — no pacote dotenv do Node, Docker/Docker Compose e em um shell POSIX carregando o mesmo arquivo diretamente. Tudo é processado inteiramente no navegador: o que você cola não é enviado, registrado nem transmitido, algo importante porque arquivos .env reais costumam conter segredos.

O processamento é feito localmente no seu navegador. Seu arquivo nunca é enviado.

Como usar esta ferramenta ferramenta

  1. Cole o conteúdo do arquivo .env (ou um trecho representativo); a análise ocorre inteiramente no navegador, portanto valores secretos reais não saem desta página.
  2. Selecione ‘Verificar arquivo .env’.
  3. Confira cada linha sinalizada: o que é ambíguo ou arriscado e em que dotenv, Docker Compose ou shell POSIX divergem.
  4. Aplique a reescrita sugerida quando disponível. Alguns casos (aspas não fechadas, chave duplicada, referência de interpolação, nome de chave inválido) ficam deliberadamente para resolução manual, pois adivinhar incorretamente seria pior do que não adivinhar.

Premissas

Fontes e dados de referência

Metodologia

Cada linha é analisada em chave, valor bruto e indicador de aspas; em seguida, são verificadas divergências documentadas entre dotenv, Docker/Docker Compose e shell POSIX: espaços sem aspas e `#` sem aspas (interpretados de maneira diferente ou truncados), prefixo `export` (aceito, removido ou rejeitado conforme o parser), aspas não fechadas (comportamento multilinha inconsistente), interpolação `$VAR`/`${VAR}` (expandida pelo shell/Compose e literal em dotenv salvo com dotenv-expand), chaves duplicadas (a última sobrescreve silenciosamente), espaços finais em valor sem aspas (preservados pelo dotenv e removidos pelo shell export) e nomes de chave que não são identificadores válidos de shell POSIX. A reescrita só é oferecida nos casos seguros: colocar valor entre aspas, remover espaço final ou retirar prefixo export. Nunca se adivinha a intenção.

Exemplo resolvido

Um valor que referencia outra variável

Dados de entrada: API_URL=${BASE_URL}/api

Resultado: Por padrão, dotenv NÃO expande `${BASE_URL}`: a string literal permanece em API_URL, a menos que também se use o pacote dotenv-expand; um shell POSIX que carrega o arquivo e o Docker Compose expandem. É sinalizada como aviso; não se reescreve porque não é possível inferir se a expansão era pretendida.

Prefixo export

Dados de entrada: export APP_NAME=My Example App

Resultado: Sintaxe válida de shell POSIX, mas dotenv e Docker Compose divergem sobre o prefixo `export`: alguns o rejeitam, outros o incorporam ao nome da chave. É sinalizado como aviso e reescrito com segurança para remover o prefixo, pois dotenv (consumidor comum desses arquivos) espera o formato simples. O espaço sem aspas no valor é sinalizado separadamente como problema de maior gravidade.

Chave duplicada

Dados de entrada: TIMEOUT=30 TIMEOUT=60

Resultado: A maioria dos parsers, inclusive dotenv, mantém silenciosamente apenas a última ocorrência; TIMEOUT=30 é descartada. A segunda ocorrência é sinalizada como aviso, com referência à linha que substitui.

Orientações práticas
Erros comuns

Perguntas frequentes

É seguro colar valores secretos reais nesta ferramenta?

A análise ocorre inteiramente no navegador; o que você cola não é enviado, registrado nem transmitido, e esta página não adiciona analytics nem telemetria próprios. Ainda assim, use o mesmo critério de qualquer ferramenta: se não se sentir à vontade para colar um valor, use um marcador de formato semelhante (mesmo comprimento e caracteres especiais). As verificações examinam sintaxe, não o significado do valor.

Por que espaço interno sem aspas é erro, mas espaço final é apenas informativo?

Um espaço interno sem aspas quebra a atribuição em shell POSIX ou parser estrito de Docker Compose: é uma falha funcional. Espaço em branco final após um valor normal apenas pode acrescentar um caractere inesperado à leitura pelo dotenv; costuma ser menos grave e pode ser removido automaticamente com segurança.

Por que a ferramenta não corrige chave duplicada ou nome inválido?

Ambos exigem decidir o que você pretendia: qual dos valores duplicados é o correto ou qual deveria ser o nome corrigido da chave. Adivinhar errado e alterar o arquivo silenciosamente seria pior do que apontar o problema para você decidir.

Por que `${BASE_URL}` é expandida no Compose, mas permanece literal no dotenv do Node?

Docker Compose faz interpolação na configuração Compose, enquanto o pacote `dotenv` não expande referências a variáveis por padrão; no Node normalmente é necessário um pacote adicional, como `dotenv-expand`. O comportamento exato depende do arquivo e do consumidor. Esta verificação prévia sinaliza o risco de portabilidade sintática; não executa Compose nem dotenv.

Última revisão:

Verificador de formato sintático, não parser completo de shell ou Docker Compose: reconhece o formato convencional KEY=value/comentário/linha vazia e as divergências específicas descritas, não todos os casos extremos das implementações reais. Também não pode saber a intenção em casos realmente ambíguos (aspas não fechadas, referência de interpolação, chave duplicada); informa a ambiguidade em vez de resolvê-la.

As preferências de tema e de ferramentas, além das listas de itens salvos e usados recentemente, são armazenadas somente neste navegador.