Boas Práticas de Configuração
Um módulo config; sem leituras dispersas de process.env. Estas regras mantêm a configuração do Node.js previsível entre desenvolvimento, CI e produção.
Busque em todas as páginas da documentação
Um módulo config; sem leituras dispersas de process.env. Estas regras mantêm a configuração do Node.js previsível entre desenvolvimento, CI e produção.
grep na CI para process.env fora de src/env.ts ou src/config.ts.env.example em cada PR que adiciona variáveis de ambienteprocess.env no código da aplicação. Use no-restricted-syntax do ESLint ou grep personalizado na CI..env.example, nunca .env. O exemplo lista cada chave com valores placeholders e comentários.JWT_SECRET não tem valor padrão no schema de produção.z.infer para factories e testes.redact: ['req.headers.authorization', 'DATABASE_URL']./prod/orders-api/* não /prod/* para cada pod..env.example através do schema para capturar desvios..refine.FLAGS.md.Permitida em src/env.ts, src/load-env.ts e apenas em arquivos de configuração de teste. Todo o resto importa config.
Definido pela plataforma em produção. .env local pode definir development. O schema valida os valores permitidos em um enum.
Assíncrona ao buscar SSM/Vault na inicialização. top-level await em ESM main.ts no Node 24 é aceitável.
env.ts por serviço. Helpers Zod compartilhados em um pacote interno - não um env global para todos os serviços.
Sim, se a equipe estiver padronizada. Mesmas regras: um módulo, validação na inicialização, sem leituras dispersas.
DATABASE_URL faltando na implantação de uma nova região - capturado pela prontidão + Zod se o schema for executado antes do listen.
Não. Defina process.env na configuração ou passe um fixture para loadEnv(fixture).
Agrupe em .env.example com comentários; link para a linha no Notion para proprietários. Divida os módulos de schema por domínio.
Configurações não secretas como PUBLIC_WEB_URL podem residir em config/default.json commitado se a equipe preferir - ainda assim, valide com Zod na junção.
Configurações específicas do tenant, sim; parametrização de processo (portas, tamanhos de pool), não - mantenha em env.
Versões da Stack: Esta página foi escrita para Node.js 24.18.0 (Active LTS), npm 10+, TypeScript 5.6+, Express 5, Fastify 5, e NestJS 11.
Revisado por Chris St. John·Última atualização: 16 de jul. de 2026