Dotenv-linter v3.0.0

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 Evrone, 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 information

Dies hat für etwas Verwirrung gesorgt. Diese Flags kollidierten miteinander und funktionierten in Kombination nicht unbedingt gut:

$ dotenv-linter --fix --show-checks

In 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: FOO

Anzeige 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 problem

Sie können dies über den Flag --quiet/-q deaktivieren:

$ dotenv-linter --quiet
.env:1 LeadingCharacter: Invalid leading character detected

Farbige Ausgabe 🌈

Um die Benutzerfreundlichkeit zu verbessern, haben wir eine farbige Warnanzeige hinzugefügt:

coloured output

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 problem

Wir 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=YOURSECRETKEYGOESHERE

Das Präfix exportermöglicht den Export von Umgebungsvariablen aus einer Datei über den Befehl source:

$ source .env

Bei 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 problems

In 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 problem

Leistungsoptimierungen 🚀

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.20

Dies 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!
Mikhail Grachev
Softwareingenieur bei Evrone
Kontaktieren Sie uns
Schwebt Ihnen ein Projekt vor?
Setzen wir es gemeinsam um
Datei anhängen
Die Dateien müssen kleiner als 8 MB sein.
Zulässige Dateierweiterungen: jpg jpeg png txt rtf pdf doc docx ppt pptx.
Diese Website wird durch reCAPTCHA geschützt. Es gelten die Datenschutzerklärung und die Nutzungsbedingungen von Google.