Formato del archivo .env: las reglas de sintaxis que más confunden

Guía del formato de archivo .env

Formato del archivo .env: sintaxis, comillas, comentarios y multilínea | We.Inc

Las reglas de sintaxis del archivo .env para comillas, comentarios, valores vacíos y claves multilínea, en qué no coinciden dotenv y Docker Compose, y un linter en el que puedes pegar un archivo.

Un archivo .env es texto plano con un par KEY=value por línea. Las líneas en blanco se ignoran y las que empiezan por # son comentarios. Pon el valor entre comillas cuando tenga espacios en los extremos, un signo # o saltos de línea. No existe un estándar único, así que dotenv para Node y Docker Compose interpretan algunos casos límite de forma distinta.

Cómo lee dotenv las líneas habituales

La mayoría de los archivos .env rotos fallan por los mismos pocos detalles: un # en una contraseña, una clave privada pegada en varias líneas o unas comillas que nunca se cierran. Pega tu archivo en el linter para ver qué leería dotenv en cada clave y dónde Docker Compose lo leería de otra manera.

Preguntas frecuentes

¿Existe una especificación oficial del archivo .env?

No. El formato surgió de las asignaciones de variables del shell y cada cargador documenta sus propias reglas. El paquete dotenv para Node y Docker Compose publican las suyas, y coinciden en lo básico: líneas KEY=value, comentarios con # y valores entre comillas.

¿Debo poner comillas a los valores de un archivo .env?

Solo cuando las necesites. Las comillas son obligatorias para valores con un signo #, espacios al principio o al final, o saltos de línea. Usa comillas simples en Compose cuando quieras que un $ se mantenga literal, porque ahí los valores entre comillas simples no se interpolan.

¿Cómo escribo un valor multilínea, como una clave privada?

Ponlo entre comillas dobles y conserva los saltos de línea reales, algo que dotenv admite desde la versión 15.0.0. También puedes dejarlo en una sola línea y escribir \n donde vaya cada salto, ya que los valores entre comillas dobles convierten \n en un salto de línea.

¿Puedo poner un comentario al final de una línea?

Sí, con cuidado. dotenv trata un # sin comillas como el inicio de un comentario. Docker Compose solo lo hace cuando hay un espacio antes del #, así que KEY=a#b da a#b en Compose pero a en dotenv. Deja un espacio antes de los comentarios en línea para ir sobre seguro.

¿dotenv sobrescribe variables que ya están definidas?

No. Por defecto dotenv nunca cambia una variable que ya existe en el entorno, así que gana el valor definido por tu shell o tu hosting. Pasa la opción override en true si quieres que el archivo las reemplace.

Dónde se separan dotenv y Docker Compose

Mantener seguros los archivos .env

dotenv y Docker Compose lado a lado

La misma línea leída por dos cargadores

Ejemplos que puedes copiar

Un .env.example ordenado

Las mismas claves que el archivo real, valores ficticios seguros y comentarios que explican cada grupo. Haz commit de este, nunca del .env real.

Cargarlo en Node

config() lee .env desde el directorio de trabajo actual por defecto. Los valores que ya están en el entorno se quedan como están.

Linter de .env

Pega tu archivo .env

Qué lee dotenv de cada línea

Línea

Clave

Valor

Notas

(cadena vacía)

{n} claves leídas, {v} con notas

Aún no se ha encontrado ninguna clave.

No hay signo =, así que esta línea se ignora.

La clave contiene un espacio. Quítalo o la línea no se analizará como esperas.

No es un nombre portable. Los shells esperan letras, dígitos y guiones bajos, sin empezar por un dígito.

Las comillas no se cierran nunca, así que el resto del archivo puede acabar dentro de este valor.

También definida en la línea {n}. Deja una sola para que nadie tenga que adivinar cuál gana.

dotenv se detiene en el #, pero Docker Compose lo conserva porque no hay un espacio antes. Pon el valor entre comillas.

Contiene $. Docker Compose lo expande; dotenv a secas lo deja tal como está escrito.

Ocupa varias líneas dentro de las comillas.

Empieza gratis · Sin tarjeta de crédito

Relacionado: Guías

Producto

Para quién es

Funciones

Recursos

Empresa

Mapa del sitio