.env-bestandsformaat: de syntaxregels waar mensen over struikelen

Gids voor het .env-bestandsformaat

.env-bestandsformaat: syntax, quotes, comments, multiline | We.Inc

De syntaxregels van .env-bestanden voor quotes, comments, lege waarden en multiline keys, waar dotenv en Docker Compose verschillen, plus een linter waarin u een bestand kunt plakken.

Een .env-bestand is platte tekst met één KEY=value-paar per regel. Lege regels worden overgeslagen en regels die met # beginnen zijn comments. Zet een waarde tussen quotes als die spaties aan de uiteinden, een #-teken of regeleinden bevat. Er is geen enkele standaard, dus dotenv voor Node en Docker Compose lezen een paar randgevallen verschillend.

Hoe dotenv veelvoorkomende regels leest

De meeste kapotte .env-bestanden falen op dezelfde handvol details: een # in een wachtwoord, een private key die over meerdere regels is geplakt, of een quote die nooit sluit. Plak uw bestand in de linter om te zien wat dotenv voor elke key zou lezen, en waar Docker Compose het anders zou lezen.

Veelgestelde vragen

Bestaat er een officiële specificatie voor .env-bestanden?

Nee. Het formaat is gegroeid uit toewijzingen van shellvariabelen en elke loader documenteert zijn eigen regels. Het dotenv-pakket voor Node en Docker Compose publiceren allebei hun regels, en ze zijn het eens over de basis: KEY=value-regels, #-comments en waarden tussen quotes.

Moet ik waarden in een .env-bestand tussen quotes zetten?

Alleen als het nodig is. Quotes zijn vereist voor waarden met een #-teken, spaties aan het begin of eind, of regeleinden. Gebruik in Compose enkele quotes als u wilt dat een $ letterlijk blijft, omdat waarden tussen enkele quotes daar niet worden geïnterpoleerd.

Hoe schrijf ik een waarde over meerdere regels, zoals een private key?

Zet hem tussen dubbele quotes en behoud de echte regeleinden, wat dotenv vanaf versie 15.0.0 ondersteunt. U kunt hem ook op één regel houden en \n schrijven waar elk regeleinde komt, omdat waarden tussen dubbele quotes \n in een nieuwe regel omzetten.

Kan ik een comment aan het eind van een regel zetten?

Ja, maar voorzichtig. dotenv ziet een # zonder quotes als het begin van een comment. Docker Compose doet dat alleen als er een spatie voor de # staat, dus KEY=a#b geeft a#b in Compose maar a in dotenv. Zet voor de zekerheid een spatie voor inline comments.

Overschrijft dotenv variabelen die al gezet zijn?

Nee. Standaard wijzigt dotenv nooit een variabele die al in de omgeving bestaat, dus een waarde die uw shell of host zet wint. Geef de optie override mee met de waarde true als u wilt dat het bestand ze vervangt.

Waar dotenv en Docker Compose uit elkaar gaan

.env-bestanden veilig houden

dotenv en Docker Compose naast elkaar

Dezelfde regel gelezen door twee loaders

Voorbeelden om te kopiëren

Een nette .env.example

Dezelfde keys als het echte bestand, veilige dummywaarden, comments die elke groep uitleggen. Commit dit bestand, nooit de echte .env.

Laden in Node

config() leest standaard .env uit de huidige werkmap. Waarden die al in de omgeving staan, blijven zoals ze zijn.

.env-linter

Plak uw .env-bestand

Wat dotenv uit elke regel leest

Regel

Key

Waarde

Notities

(lege string)

{n} keys gelezen, {v} met notities

Nog geen keys gevonden.

Geen =-teken, dus deze regel wordt genegeerd.

De key bevat een spatie. Verwijder die, anders wordt de regel niet geparset zoals u verwacht.

Geen portabele naam. Shells verwachten letters, cijfers en underscores, niet beginnend met een cijfer.

De quote sluit nooit, dus de rest van het bestand kan in deze waarde worden opgeslokt.

Ook gezet op regel {n}. Houd er één over zodat niemand hoeft te raden welke wint.

dotenv stopt bij de #, maar Docker Compose behoudt hem omdat er geen spatie voor staat. Zet de waarde tussen quotes.

Bevat $. Docker Compose breidt dit uit; gewone dotenv houdt het zoals geschreven.

Loopt over meerdere regels binnen quotes.

Gratis beginnen · Geen creditcard nodig

Gerelateerd: Gidsen

Product

Voor wie

Functies

Bronnen

Bedrijf

Sitemap