Erstellen und speichern Sie Konfigurationen in Node.js
Die Verwaltung von Konfigurationsdateien kann in Node.js für unerfahrene Entwickler eine entmutigende Aufgabe sein. Es stimmt, obwohl es Bibliotheken wie convict
, husks
oder config
gibt, die die Entwicklung und Verwaltung von Konfigurationsdateien erleichtern.
Eine der bewährten Methoden, die das Speichern und Verwalten von Konfigurationsdateien vereinfachen, ist das Erstellen einer zentralen Datei, die die Dateien speichert und sicherstellt, dass die Dateien geändert werden können, ohne den Code zu beeinträchtigen.
Eine zentralisierte Datei zu haben, die dann auf andere Umgebungen erweitert werden kann, erleichtert anderen Entwicklern das Lesen Ihres Codes und fördert die Wiederverwendbarkeit.
In Node.js werden Konfigurationsdateien normalerweise in einer Standardkonfigurationsdatei gespeichert; Sie können jedoch durch externe Quellen oder Umgebungsvariablen überschrieben und erweitert werden.
Konfigurationsdateien können in verschiedenen Dateiformaten vorliegen; Dazu gehören die gängigen wie .json
, YAML
und andere wie .json5
oder .hjson
.
Installieren Sie node-config
zum Erstellen und Speichern von Konfigurationen in Node.js
Node-config
ist ein npm
-Paket, mit dem wir verschiedene Bereitstellungskonfigurationsdateien erstellen und speichern können. Mit diesem Paket können wir Standardparameter definieren, die sich auf Entwicklungs-, Produktions- oder Staging-Umgebungen erstrecken.
Wir können Node-config
mit dem Paketmanager npm
installieren und einrichten. Wir müssen jedoch zuerst einen einfachen Express-Server erstellen und dann wie hier gezeigt zum Ordner der Anwendung navigieren.
Sobald der Anwendungsserver vorhanden ist, können wir das Konfigurationspaket installieren, indem wir den folgenden Befehl ausführen.
$ npm install config
Der obige Befehl fügt das Konfigurationspaket als eine unserer Abhängigkeiten in der Datei package.json
hinzu, wie unten gezeigt.
{
'name': 'myapp', 'version': '1.0.0', 'description': '', 'main': 'index.js',
'scripts': {'test': 'echo "Error: no test specified" && exit 1'},
'author': 'Isaac Tony', 'license': 'MIT',
'dependencies': {'config': '^3.3.7', 'express': '^4.17.2'}
}
Wir können jetzt eine Datei erstellen, die alle unsere Standardkonfigurationsdateien enthält, indem wir zuerst einen Ordner erstellen, den wir config nennen, und dann eine Datei namens default.json
erstellen, wie in der Anwendungsstruktur unten gezeigt.
Wie oben gezeigt, haben wir bei der Verwendung von Node-config
zwar die Flexibilität bei der Auswahl des Dateityps, in dem unsere Konfigurationen gespeichert werden, aber wir haben uns dafür entschieden, am .json
-Format festzuhalten, da es das Standardformat ist.
Jetzt können wir in der Datei default.json
unsere Konfigurationseinstellung in unserer Anwendung hinzufügen. Hier sind einige grundlegende Konfigurationen, die wir der Datei default.json
hinzufügen können.
{
'server': {'port': 3000},
'db': {'host': 'localhost', 'port': 27017, 'name': 'mongodb'}
}
Mit der Funktion config.get
können wir nun diese Parameter und Einstellungen abrufen und in unserer Anwendung verwenden, wie in der Datei index.js
unten gezeigt.
const express = require('express')
const app = express()
const config = require('config');
const port = config.get('server.port');
const host = config.get('db.host');
app.get('/', (req, res) => {res.send('Hello World!')})
app.listen(
port, host,
() => {console.log(`The application is listening on ${host}:${port}`)})
Sobald wir diese Standardkonfigurationsdatei eingerichtet haben, können wir diese Konfigurationseinstellungen problemlos auf Produktion, Tests usw. erweitern, indem wir Konfigurationsdateien für die jeweilige Umgebung erstellen.
Wir können auch umgebungsspezifische Überschreibungen durchführen, indem wir Konfigurationsvariablen in der Standardkonfigurationsdatei in einer anderen umgebungsspezifischen Konfigurationsdatei oder über die Befehlszeile wiederholen, indem wir die Variable NODE-CONFIG
erstellen, bevor wir die Anwendung starten.
Isaac Tony is a professional software developer and technical writer fascinated by Tech and productivity. He helps large technical organizations communicate their message clearly through writing.
LinkedIn