Formato del file .env: le regole di sintassi insidiose

Guida al formato del file .env

Formato del file .env: sintassi, virgolette, commenti, multiriga | We.Inc

Le regole di sintassi del file .env per virgolette, commenti, valori vuoti e chiavi multiriga, dove dotenv e Docker Compose non sono d'accordo, più un linter in cui incollare il tuo file.

Un file .env è testo semplice con una coppia KEY=value per riga. Le righe vuote vengono saltate e quelle che iniziano con # sono commenti. Metti tra virgolette un valore quando contiene spazi alle estremità, un segno # o a capo. Non esiste uno standard unico, quindi dotenv per Node e Docker Compose leggono alcuni casi limite in modo diverso.

Come dotenv legge le righe più comuni

La maggior parte dei file .env rotti fallisce sugli stessi pochi dettagli: un # in una password, una chiave privata incollata su più righe o una virgoletta mai chiusa. Incolla il tuo file nel linter per vedere cosa leggerebbe dotenv per ogni chiave, e dove Docker Compose lo leggerebbe in modo diverso.

Domande frequenti

Esiste una specifica ufficiale del file .env?

No. Il formato è nato dalle assegnazioni di variabili della shell e ogni loader documenta le proprie regole. Il pacchetto dotenv per Node e Docker Compose pubblicano entrambi le loro, e concordano sulle basi: righe KEY=value, commenti con # e valori tra virgolette.

Devo mettere le virgolette attorno ai valori in un file .env?

Solo quando servono. Le virgolette sono necessarie per valori con un segno #, spazi iniziali o finali, o a capo. Usa le virgolette singole in Compose quando vuoi che un $ resti letterale, perché lì i valori tra virgolette singole non vengono interpolati.

Come scrivo un valore multiriga come una chiave privata?

Racchiudilo tra virgolette doppie e mantieni i veri a capo, che dotenv supporta dalla versione 15.0.0. Puoi anche tenerlo su una riga e scrivere \n dove va ogni a capo, dato che i valori tra virgolette doppie trasformano \n in una nuova riga.

Posso mettere un commento alla fine di una riga?

Sì, con attenzione. dotenv considera un # senza virgolette come l'inizio di un commento. Docker Compose lo fa solo quando prima del # c'è uno spazio, quindi KEY=a#b dà a#b in Compose ma a in dotenv. Lascia uno spazio prima dei commenti in linea per sicurezza.

dotenv sovrascrive le variabili già impostate?

No. Per impostazione predefinita dotenv non modifica mai una variabile che esiste già nell'ambiente, quindi vince un valore impostato dalla tua shell o dall'host. Passa l'opzione override impostata a true se vuoi che il file le sostituisca.

Dove dotenv e Docker Compose si separano

Tenere al sicuro i file .env

dotenv e Docker Compose a confronto

La stessa riga letta da due loader

Esempi da copiare

Un .env.example ordinato

Stesse chiavi del file reale, valori fittizi sicuri, commenti che spiegano ogni gruppo. Fai commit di questo, mai del vero .env.

Caricarlo in Node

config() legge .env dalla directory di lavoro corrente per impostazione predefinita. I valori già presenti nell'ambiente restano invariati.

Linter per .env

Incolla il tuo file .env

Cosa legge dotenv da ogni riga

Riga

Chiave

Valore

Note

(stringa vuota)

{n} chiavi lette, {v} con note

Nessuna chiave trovata per ora.

Nessun segno =, quindi questa riga viene ignorata.

La chiave contiene uno spazio. Rimuovilo, altrimenti la riga non verrà letta come ti aspetti.

Non è un nome portabile. Le shell si aspettano lettere, cifre e underscore, senza iniziare con una cifra.

La virgoletta non si chiude mai, quindi il resto del file potrebbe finire dentro questo valore.

Impostata anche alla riga {n}. Tienine una sola così nessuno deve indovinare quale vince.

dotenv si ferma al #, ma Docker Compose lo mantiene perché non c'è uno spazio prima. Metti il valore tra virgolette.

Contiene $. Docker Compose lo espande; dotenv semplice lo mantiene così com'è scritto.

Si estende su più righe tra virgolette.

Inizia gratis · Nessuna carta di credito richiesta

Correlati: Guide

Prodotto

Per chi è

Funzionalità

Risorse

Azienda

Mappa del sito