Was sind die wichtigsten Änderungen in dotenv-linter v3.0.0?
Wir haben dotenv-linter entwickelt — ein nützliches Tool zur Überprüfung von .env -Dateien. Es hilft dabei, Probleme in .env -Dateien zu finden, die Sie vielleicht zunächst übersehen, welche aber später zu fehlerhaftem Verhalten in Anwendungen führen können. Wir haben das Tool universell gestaltet, sodass die Verbindung mit jedem Projekt unabhängig von der Programmiersprache möglich ist. Dotenv-linter wird als Open-Source-Projekt von Mikhail Grachev, einem Softwareingenieur von Singula, entwickelt.
Was ist eine .env -Datei?
Eine .env - oder dotenv-Datei ist eine einfache Textdatei, die alle Umgebungsvariablen eines Projekts enthält. Die Speicherung der Konfiguration in den Umgebungsvariablen ist einer der Grundsätze des „Twelve-Factor App“-Manifests. Die .env-Datei nutzt ein schlichtes Schlüssel-Wert-Format, z. B.: FOO=BAR
Wir haben bereits etwas zu dotenv-linter v2.2.0 geschrieben. Seitdem sind zweieinhalb Monate vergangen und wir sind bereit, Ihnen eine neue Version von dotenv-linter zu präsentieren — v3.0.0. Im Folgenden finden Sie eine Übersicht über die wichtigsten Änderungen in diesem Release!
API-Verbesserungen 👍
In der vorherigen Version bot dotenv-linter mehrere Flags an, die im Wesentlichen separate Befehle waren, --fix und --show-checks:
FLAGS:
-f, --fix Automatically fixes warnings
-h, --help Prints help information
--no-backup Prevents .env files from being backed up when modified by -f/--fix
-q, --quiet Doesn't display additional information
-r, --recursive Recursively search and check .env files
--show-checks Shows list of available checks
-v, --version Prints version informationDies hat für etwas Verwirrung gesorgt. Diese Flags kollidierten miteinander und funktionierten in Kombination nicht unbedingt gut:
$ dotenv-linter --fix --show-checksIn der neuen Version haben wir dies behoben und die Flags --fix und --show-checks in die separaten Befehle fix und list commands:
FLAGS:
-h, --help Prints help information
-q, --quiet Doesn't display additional information
-r, --recursive Recursively searches and checks .env files
-v, --version Prints version information
SUBCOMMANDS:
fix Automatically fixes warnings [aliases: f]
list Shows list of available checks [aliases: l]Vergleich von .env-Dateien 🤲
Außerdem haben wir in der aktualisierten Version den neuen Befehl compare hinzugefügt, mit dem Sie Schlüssel in.env-Dateien vergleichen können:
$ dotenv-linter compare .env .env.example
Comparing .env
Comparing .env.example
.env is missing keys: BAR
.env.example is missing keys: FOOAnzeige gescannter Dateien 👀
Im Falle der Präsenz mehrerer .env-Dateien war nicht immer klar, welche von dotenv-linter geprüft wurden und welche nicht. Dies konnte an einem nicht standardmäßigen Dateinamen liegen oder daran, dass es in diesen Dateien keine Probleme gab. In der neuen Version haben wir eine Anzeige für gescannte Dateien hinzugefügt:
$ dotenv-linter
Checking .env
.env:1 LeadingCharacter: Invalid leading character detected
Checking .env.example
Checking .env.test
Found 1 problemSie können dies über den Flag --quiet/-q deaktivieren:
$ dotenv-linter --quiet
.env:1 LeadingCharacter: Invalid leading character detectedFarbige Ausgabe 🌈
Um die Benutzerfreundlichkeit zu verbessern, haben wir eine farbige Warnanzeige hinzugefügt:
Sie können die farbige Ausgabe über den Flag --no-color deaktivieren.
Unterstützung für mehrzeilige Werte 💪
In .env-Dateien können mehrzeilige Werte gespeichert werden. Eine der Optionen sieht so aus:
# .env
MULTILINE="new\nline"Doch bei der Überprüfung solcher Werte hat dotenv-linter in der Vergangenheit eine Warnung angezeigt:
$ dotenv-linter
.env:1 QuoteCharacter: The value has quote characters (', ")
Found 1 problemWir haben dies behoben und nun gibt dotenv-linter keine Warnungen mehr für mehrzeilige, in Anführungszeichen eingeschlossene Werte aus.
SUnterstützung für das Präfix export 🔥
Einige Bibliotheken für die Arbeit mit .env -Dateien wie z. B. dotenv, godotenv und python-dotenv unterstützen das Präfix export:
# .env
export S3_BUCKET=YOURS3BUCKET
export SECRET_KEY=YOURSECRETKEYGOESHEREDas Präfix exportermöglicht den Export von Umgebungsvariablen aus einer Datei über den Befehl source:
$ source .envBei der Überprüfung solcher Dateien hat dotenv-linter stets Warnungen angezeigt:
$ dotenv-linter
.env:1 IncorrectDelimiter: The export S3_BUCKET key has incorrect delimiter
.env:1 LowercaseKey: The export S3_BUCKET key should be in uppercase
.env:2 IncorrectDelimiter: The export SECRET_KEY key has incorrect delimiter
.env:2 LowercaseKey: The export SECRET_KEY key should be in uppercase
Found 4 problemsIn der neuen Version haben wir Unterstützung für das Präfix export hinzugefügt und nun gibt dotenv-linter keine Warnungen mehr aus.
Unterstützung für Leerzeichen 🙌
Eine weitere Verbesserung stellt die Unterstützung von Leerzeichen in Werten dar, die in Anführungszeichen eingeschlossen sind:
# .env
WHITESPACES="a b c"Für derartige Werte zeigt dotenv-linter ab sofort keine Warnungen mehr an.
Verbesserte Validierung 👌
Darüber hinaus haben wir ein Problem behoben, bei dem dotenv-linter nicht alle Warnungen auf einmal ausgegeben hat:
$ dotenv-linter fix .env
Fixing .env
Original file was backed up to: ".env_1606422805"
.env:1 KeyWithoutValue: The test key should be with a value or have an equal sign
All warnings are fixed. Total: 1
$ dotenv-linter .env
Checking .env
.env:1 LowercaseKey: The test key should be in uppercase
Found 1 problemLeistungsoptimierungen 🚀
Zu guter Letzt haben wir die Performance von dotenv-linter. optimiert, die sich schon zuvor auf einem hohen Niveau befand. Die maximale Startzeit hat sich von 9,3 ms auf 4,3 ms verringert (um mehr als 50 %).
Um dies zu überprüfen, haben wir eine Benchmark mit dem Utility hyperfine durchgeführt:
Command Mean [ms] Min [ms] Max [ms] Relative
dotenv-linter/dotenv-linter .env 2.7 ± 0.4 2.0 4.3 1.00
wemake-services/dotenv-linter .env 162.6 ± 12.1 153.0 201.3 60.83 ± 10.20Dies sind die wichtigsten Änderungen des neuen Release v3.0.0. Vielen Dank an alle, die dazu beigetragen haben! Sie können das Projekt unterstützen, indem Sie es auf GitHub mit einem Stern versehen oder sponsern.
Es steht Ihnen frei, ein Sponsor auf GitHub Sponsors oder OpenCollective zu werden ❤️
Bei der Arbeit mit .env-Dateien können einige Probleme auftreten, die Sie vielleicht nicht auf den ersten Blick bemerken oder bei der Überprüfung des Codes übersehen, welche aber unter Umständen zu einer Fehlfunktion der Anwendung führen. Hier kommt dotenv-linter ins Spiel — das Tool kann in jedem Ihrer Projekte unabhängig von der Programmiersprache eingesetzt werden!