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.
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.
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.
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ę.
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.
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ł.
Ta sama linia odczytana przez dwa loadery
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.
config() domyślnie czyta .env z bieżącego katalogu roboczego. Wartości już obecne w środowisku pozostają bez zmian.
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