- Herramienta de nueva generación para la gestión de variables de entorno que supera las limitaciones del enfoque tradicional
.env/.env.example y resuelve de una sola vez colaboración, IA, seguridad y estabilidad de tipos
- Con
.env.schema, el esquema de variables de entorno se gestiona en un solo lugar, así que, a diferencia de .env.example, no hay que preocuparse por desajustes entre lo real y lo ejemplificado
- Mediante anotaciones decoradoras
@env-spec, se puede agregar de forma declarativa al archivo .env diversa información como esquema, tipo, validación, ejemplo, sensibilidad y gestión de secretos externos
@required, @type=string, @sensitive, @example, etc.
- Validación potente: guía de inmediato sobre configuraciones incorrectas o valores faltantes con mensajes claros (bloqueo preventivo antes del runtime)
- Generación automática de tipos basada en esquemas, para ofrecer seguridad de tipos al acceder a variables de entorno en el código y soporte de IntelliSense en el IDE
- Seguridad: enmascaramiento automático de información sensible (logs/consola) y detección de filtraciones en clientes empaquetados o dentro de respuestas
- Múltiples entornos y overrides: soporte para configuraciones complejas de entorno, como valores predeterminados, archivos por entorno, valores personales ignorados por git y combinación con
process env
- Integración con secretos externos: carga dinámica de secretos basada en comandos como 1Password y exec; próximamente habrá soporte para plugins, cifrado local y vault de equipo
- Independiente del lenguaje y del runtime: además de JS/TS, permite inyectar env validados en cualquier lenguaje o proceso, por ejemplo con
varlock run -- python my.py
- Puede reemplazar completamente a dotenv: con solo cambiar el import de dotenv por varlock, se obtiene de inmediato validación, generación automática de tipos, mayor seguridad e integración de múltiples entornos y secretos
2 comentarios
¿Entonces esto significa que
.env.schemadebería estar incluido en.gitignore?Ah... entonces la información se guarda en
.envy.env.schemala carga, ¿no?