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
- 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.
- Selecione ‘Verificar arquivo .env’.
- Confira cada linha sinalizada: o que é ambíguo ou arriscado e em que dotenv, Docker Compose ou shell POSIX divergem.
- 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
- Espera uma atribuição KEY=value por linha, linhas de comentário iniciadas por `#` e linhas vazias: formato convencional de .env usado por dotenv, env_file do Docker Compose e carregamento por shell POSIX.
- Um valor só é considerado ‘entre aspas’ quando começa e termina com um par correspondente de aspas duplas ou simples; uma aspa solta em outra posição é justamente o caso verificado pela regra de aspas não fechadas.
- Nunca presume o significado pretendido de chave duplicada, referência de interpolação ou nome de chave inválido: esses casos são informados, não resolvidos silenciosamente.
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
- Coloque entre aspas qualquer valor que contenha espaço ou `#`, mesmo que dotenv aceite sem aspas; as aspas permitem que o arquivo se comporte da mesma forma se for carregado diretamente por um shell ou lido pelo Docker Compose.
- Evite referências `$VAR`/`${VAR}` em arquivos .env, a menos que confirme que todos os consumidores as expandem da mesma forma; é uma causa comum de problemas reais de portabilidade .env.
- Não dependa de prefixos `export` para compatibilidade com ferramentas baseadas em dotenv. Use `KEY=value` sem prefixo e um script wrapper de shell se também precisar carregar o arquivo diretamente.
Erros comuns
- Presumir que um valor é portátil porque ‘o aplicativo inicia’: espaço sem aspas, referência não expandida ou chave duplicada sobrescrita podem ser carregados e ainda conter o valor errado.
- Tratar nomes de chave .env como rótulos livres: analisadores permissivos como dotenv aceitam hífens ou dígitos iniciais, mas o arquivo falhará ao ser carregado por um shell real.
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.