Einmal definieren, überall vertrauen
CtroEnv nutzt vier zentrale Validator-Factories, um Ihre Umgebungsvariablen sicher zu halten.
So funktionieren sie:
string() für Text Verwenden Sie dies für URLs, E-Mails und Ports. Sie können Regeln wie .min() oder .max() verketten, um Längenbeschränkungen festzulegen.
number() für numerische Werte Dies konvertiert Strings wie "3000" in tatsächliche Zahlen. Sie können Ganzzahlen oder positive Werte erzwingen.
boolean() für true oder false Dies dient der Handhabung von Feature-Flags. Es wandelt "true", "1" oder "false" in echte Booleans um.
pick() für spezifische Mengen Verwenden Sie dies, um Werte auf eine Liste zu beschränken. Sie können beispielsweise erzwingen, dass NODE_ENV nur "development", "staging" oder "production" sein darf. Wenn Sie sich vertippen, schlägt die Fehlermeldung die richtige Schreibweise vor.
Nützliche Werkzeuge für jeden Validator:
• .default(value) - Legt einen Fallback fest, falls die Variable fehlt. • .optional() - Erlaubt es der Variable, undefined zu sein. • .secret() - Maskiert sensible Daten in Ihren Logs. • .describe(text) - Fügt eine Dokumentation für Ihre Fehlermeldungen hinzu. • .validate(fn) - Ermöglicht das Schreiben eigener Logik für einmalige Regeln.
CtroEnv funktioniert in verschiedenen Umgebungen:
- Node.js: Verwenden Sie nodeSource() oder loadEnv(), um .env-Dateien zu lesen.
- Vite: Verwenden Sie das vitePlugin, um Ihren Build fehlschlagen zu lassen, falls die Variablen ungültig sind.
- Next.js: Nutzen Sie die integrierte Unterstützung, um Server- und Client-Variablen zu trennen. Dies verhindert, dass Sie versehentlich Secrets an den Browser preisgeben.
Wenn die Validierung fehlschlägt, stoppt CtroEnv nicht einfach. Es sammelt jeden einzelnen Fehler und zeigt sie alle auf einmal an. Sie erhalten eine klare Liste darüber, was fehlt, was den falschen Typ hat und was Ihre benutzerdefinierten Regeln verletzt hat.
Dies hält Ihre Konfiguration unveränderlich und Ihre Laufzeit vorhersagbar.
Quelle: https://dev.to/ctrotech/define-once-trust-everywhere-ctroenv-deep-dive-3bjl