Knoten.js Best Practices – Intelligentere Möglichkeiten zum Verwalten von Konfigurationsdateien und Variablen

Mär 24, 2018 · 3 min Lesezeit

Ich finde die Praxis, einen separaten Knoten zu erstellen.js-Konfigurationsdateien zur Verwaltung von Konfigurationsvariablen für verschiedene Umgebungen (Entwicklung, Test, Staging und Produktion) umständlich.

Am Ende hatte ich eine Lösung, die Konfigurationsvariablen für alle Umgebungen mit einem einzigen Knoten verwaltet.js-Konfigurationsdatei.

Zuerst erstellen wir config.json im Ordner root / config wie unten. Die Idee ist, dass development die Standardumgebung ist und alle Konfigurationsvariablen enthält. Sie wiederholen Konfigurationsvariablen nur in anderen Umgebungen, wenn Sie die Standardwerte der Konfigurationsvariablen in der Standardentwicklungsumgebung überschreiben möchten.

Wie Sie sehen können, überschreiben Test-, Staging- und Produktionsumgebungen die Konfigurationsvariablen config_id und database . Staging- und Produktionsumgebungen überschreiben auch die Konfigurationsvariable node_port.

Als nächstes schreiben wir Code, um die eigentliche Logik zu implementieren. Konfiguration erstellen.js im Ordner root / config wie unten. Dieser Code:

  1. Liest den in root / config gefundenen JSON.json-Datei.
  2. Setzt die Standardkonfiguration auf den Entwicklungsknoten in config.json.
  3. Setzt die Umgebungskonfiguration auf den entsprechenden Umgebungsknoten in der Konfiguration.json basierend auf dem Wert der Umgebungsvariablen NODE_ENV (der standardmäßig auf development wenn null ).
  4. Setzt final config auf die Vereinigung von default und environment config, indem die Merge-Methode von lodash aufgerufen wird.
  5. Setzt die globale Variable gConfig mit dem Wert final config.
  6. Protokolliert den Wert von gConfig.

Zum Schluss erstellen wir root / Server.js, um all dies in einem Browser zu testen. Der folgende Code ist selbsterklärend. Testen Sie es, indem Sie verschiedene Werte für die Umgebungsvariable NODE_ENV .

Und hier sind einige Screenshots vom Testen, indem Sie die Umgebungsvariable NODE_ENV im Server NODE_ENV .js zur Entwicklung und Inszenierung. Sie können sehen, dass sich für die Staging-Umgebung die Werte für app_name, app_desc und json_indentation nicht ändern und aus der Entwicklungsumgebung übernommen werden, in der die Werte für config_id, node_port und database überschrieben werden.

Protokollausgabe für Entwicklungsumgebung

Browserausgabe für Entwicklungsumgebung

Protokollausgabe für Staging-Umgebung

Browserausgabe für Staging-Umgebung

Sie können den obigen Code klonen / herunterladen aus meinem GitHub-Repository hier .

Als Bonus hindert Sie nichts daran, Geheimnisse wie API-Schlüssel oder Kennwörter in die Konfiguration aufzunehmen.json. Verschlüsseln Sie es einfach im Ruhezustand, bevor Sie es mit einer Verschlüsselungslösung für Unternehmen wie dem Cloud Key Management Service (KMS) der Google Cloud Platform in Ihr Quell-Repository übertragen. Und entschlüsseln Sie es bei jeder Bereitstellung mit Ihrem bevorzugten CI / CD-Tool.

Weitere Informationen finden Sie in meinem Blogbeitrag Mit dem Cloud Key Management Service (KMS) der Google Cloud Platform zum Verschlüsseln / Entschlüsseln von Geheimnissen.

Viel Spaß beim Codieren!

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht.