Mejores prácticas de configuración
Un módulo config; sin lecturas dispersas de process.env. Estas reglas mantienen la configuración de Node.js predecible en desarrollo, CI y producción.
Busca en todas las páginas de la documentación
Un módulo config; sin lecturas dispersas de process.env. Estas reglas mantienen la configuración de Node.js predecible en desarrollo, CI y producción.
process.env fuera de src/env.ts o src/config.ts.env.example en cada PR que agregue variables de entornoprocess.env en el código de la aplicación. ESLint no-restricted-syntax o grep personalizado en CI..env.example, nunca .env. El ejemplo lista cada clave con valores de marcador de posición y comentarios.JWT_SECRET no tiene un valor predeterminado en el esquema de producción.z.infer para fábricas y pruebas.redact: ['req.headers.authorization', 'DATABASE_URL']./prod/orders-api/* no /prod/* para cada pod..env.example a través del esquema para detectar desviaciones..refine.FLAGS.md.Permitido solo en src/env.ts, src/load-env.ts y archivos de configuración de prueba. Todo lo demás importa config.
Establecido por la plataforma en producción. El .env local puede establecer development. El enumerador del esquema valida los valores permitidos.
Asíncrona al obtener SSM/Vault al inicio. await de nivel superior en main.ts de ESM en Node 24 está bien.
env.ts por servicio. Ayudantes de Zod compartidos en un paquete interno, no un entorno global para todos los servicios.
Sí, si el equipo lo estandarizó. Las mismas reglas: un módulo, validación al inicio, sin lecturas dispersas.
Falta de DATABASE_URL en un nuevo despliegue de región, detectado por la preparación + Zod si el esquema se ejecuta antes de escuchar.
No. Establece process.env en la configuración o pasa un fixture a loadEnv(fixture).
Agrupa en .env.example con comentarios; enlaza a una fila de Notion para los propietarios. Divide los módulos de esquema por dominio.
Los no secretos como PUBLIC_WEB_URL pueden vivir en un config/default.json confirmado si el equipo lo prefiere; aún así, valídalos con Zod al fusionar.
Configuraciones específicas del inquilino sí; cableado de procesos (puertos, tamaños de pool) no; mantenlo en el entorno.
Versiones de la pila: Esta página fue escrita para Node.js 24.18.0 (LTS activa), npm 10+, TypeScript 5.6+, Express 5, Fastify 5 y NestJS 11.
Revisado por Chris St. John·Última actualización: 16 jul 2026