Format pliku .env: reguły składni, na których się wykładasz

Przewodnik po formacie pliku .env

Format pliku .env: składnia, cudzysłowy, komentarze, wiele linii | We.Inc

Reguły składni pliku .env dotyczące cudzysłowów, komentarzy, pustych wartości i kluczy wieloliniowych, miejsca, w których dotenv i Docker Compose się różnią, oraz linter, do którego wkleisz swój plik.

Plik .env to zwykły tekst z jedną parą KEY=value w każdej linii. Puste linie są pomijane, a linie zaczynające się od # to komentarze. Ujmij wartość w cudzysłów, gdy ma spacje na początku lub końcu, znak # albo podziały linii. Nie istnieje jeden standard, więc dotenv dla Node i Docker Compose odczytują kilka przypadków brzegowych inaczej.

Jak dotenv odczytuje typowe linie

Większość zepsutych plików .env psuje się na tych samych kilku szczegółach: znak # w haśle, klucz prywatny wklejony w kilku liniach albo cudzysłów, który nigdy się nie zamyka. Wklej swój plik do lintera, aby zobaczyć, co dotenv odczyta dla każdego klucza i gdzie Docker Compose odczyta to inaczej.

Najczęściej zadawane pytania

Czy istnieje oficjalna specyfikacja pliku .env?

Nie. Format wyrósł z przypisań zmiennych w powłoce i każdy loader dokumentuje własne reguły. Pakiet dotenv dla Node i Docker Compose publikują swoje i zgadzają się co do podstaw: linie KEY=value, komentarze # i wartości w cudzysłowie.

Czy wartości w pliku .env powinny być w cudzysłowie?

Tylko wtedy, gdy jest to potrzebne. Cudzysłów jest wymagany dla wartości ze znakiem #, spacjami na początku lub końcu albo podziałami linii. W Compose używaj pojedynczego cudzysłowu, gdy chcesz, by $ pozostał dosłowny, bo wartości w pojedynczym cudzysłowie nie są tam interpolowane.

Jak zapisać wartość wieloliniową, na przykład klucz prywatny?

Ujmij ją w podwójny cudzysłów i zachowaj prawdziwe podziały linii, co dotenv obsługuje od wersji 15.0.0. Możesz też trzymać ją w jednej linii i pisać \n w miejscu każdego podziału, bo wartości w podwójnym cudzysłowie zamieniają \n w nową linię.

Czy mogę dodać komentarz na końcu linii?

Tak, ostrożnie. dotenv traktuje # bez cudzysłowu jako początek komentarza. Docker Compose robi tak tylko wtedy, gdy przed # stoi spacja, więc KEY=a#b daje a#b w Compose, ale a w dotenv. Dla bezpieczeństwa zostawiaj spację przed komentarzami w linii.

Czy dotenv nadpisuje zmienne, które są już ustawione?

Nie. Domyślnie dotenv nigdy nie zmienia zmiennej, która już istnieje w środowisku, więc wygrywa wartość ustawiona przez powłokę lub hosting. Przekaż opcję override ustawioną na true, jeśli chcesz, aby plik je zastępował.

Gdzie dotenv i Docker Compose się rozchodzą

Jak dbać o bezpieczeństwo plików .env

dotenv i Docker Compose obok siebie

Ta sama linia odczytana przez dwa loadery

Przykłady do skopiowania

Uporządkowany .env.example

Te same klucze co w prawdziwym pliku, bezpieczne przykładowe wartości, komentarze objaśniające każdą grupę. Commituj ten plik, nigdy prawdziwy .env.

Wczytanie go w Node

config() domyślnie czyta .env z bieżącego katalogu roboczego. Wartości już obecne w środowisku pozostają bez zmian.

Linter .env

Wklej swój plik .env

Co dotenv odczytuje z każdej linii

Linia

Klucz

Wartość

Uwagi

(pusty ciąg)

Odczytane klucze: {n}, z uwagami: {v}

Nie znaleziono jeszcze kluczy.

Brak znaku =, więc ta linia jest ignorowana.

Klucz zawiera spację. Usuń ją, inaczej linia nie zostanie odczytana tak, jak oczekujesz.

Nazwa nie jest przenośna. Powłoki oczekują liter, cyfr i podkreśleń, bez cyfry na początku.

Cudzysłów nigdy się nie zamyka, więc reszta pliku może zostać wchłonięta do tej wartości.

Ustawiony także w linii {n}. Zostaw jeden, aby nikt nie musiał zgadywać, który wygrywa.

dotenv zatrzymuje się na #, ale Docker Compose go zachowuje, bo nie poprzedza go spacja. Ujmij wartość w cudzysłów.

Zawiera $. Docker Compose go rozwija; zwykły dotenv zostawia go w zapisanej postaci.

Obejmuje kilka linii wewnątrz cudzysłowu.

Zacznij za darmo · Bez karty kredytowej

Powiązane: Poradniki

Produkt

Dla kogo

Funkcje

Zasoby

Firma

Mapa strony