Einführung
In Node.js muss der Prozess neu gestartet werden, damit die Änderungen wirksam werden. Dies fügt Ihrem Workflow einen zusätzlichen Schritt hinzu. Sie können diesen zusätzlichen Schritt eliminieren, indem Sie nodemon verwenden, um den Prozess automatisch neu zu starten.
nodemon ist ein von rem entwickeltes Kommandozeilenprogramm (CLI), das Ihre Node-Anwendung verpackt, das Dateisystem überwacht und den Prozess automatisch neu startet. In diesem Artikel erfahren Sie, wie Sie nodemon installieren, einrichten und konfigurieren.
Voraussetzungen
- Node.js installiert
Schritt 1 – Installieren Sie nodemon
Zuerst müssen Sie nodemon auf Ihrem Rechner installieren. Sie können das Tool global oder lokal in Ihrem Projekt installieren. npm Oder Garn Installieren.
Sie können nodemon global starten mit npm Installieren:
npm install nodemon --globalOder mit Garn:
yarn global add nodemonSie können nodemon auch lokal installieren. Bei einer lokalen Installation können Sie nodemon als Entwicklerabhängigkeit mit --save-dev (oder --dev) installieren.
Installieren Sie Nodemon lokal mit npm Installieren:
npm install nodemon --save-devOder mit Garn:
yarn add nodemon --devEine Sache, die bei einer lokalen Installation zu beachten ist, ist, dass man den Befehl nodemon nicht direkt verwenden kann:
Outputcommand not found: nodemonSie können das lokal installierte Paket ausführen:
./node_modules/.bin/nodemon.js [your node app]Sie können es auch in npm-Skripten oder mit npx verwenden.
Schritt 2 – Einrichten eines Beispiel-Express-Projekts mit nodemon
Sie können nodemon verwenden, um ein Node-Skript zu starten. Wenn Sie beispielsweise einen Express-Server in der Datei haben. server.js Starten Sie, Sie können nodemon Starten Sie das Programm und sehen Sie Änderungen wie diese:
nodemon server.jsArgumente können auf die gleiche Weise übergeben werden, wie man ein Skript mit Node ausführen würde:
nodemon server.js 3006Der Prozess beginnt jedes Mal von neuem, wenn Sie eine Änderung an einer Datei mit einer der standardmäßig beobachteten Erweiterungen (js, .mjs, .json, .coffee oder .litcoffee) im aktuellen Verzeichnis oder einem Unterverzeichnis vornehmen.
Schreiben wir eine Beispiel-server.js-Datei, die die folgende Nachricht sendet: Dolphin-Anwendung hört auf Port ${port}!.
const express = require('express')
const app = express()
const port = 3000
app.listen(port, ()=> console.log(`Dolphin app listening on port ${port}!`))Führen Sie das Beispiel mit nodemon aus:
nodemon server.jsDie Terminalausgabe zeigt folgende Ausgabe an:
Output
[nodemon] 2.0.15
[nodemon] to restart at any time, enter `rs`
[nodemon] watching path(s): *.*
[nodemon] watching extensions: js,mjs,json
[nodemon] starting `node server.js`
Dolphin app listening on port 3000!Während nodemon noch läuft, ändern wir die Datei server.js. Ändern Sie die Ausgabe in die folgende Meldung: Shark-Anwendung hört auf Port ${port}!.
Die Terminalausgabe zeigt folgende Ausgabe an:
Output
[nodemon] restarting due to changes...
[nodemon] starting `node server.js`
Shark app listening on port 3000!Die Terminalausgabe der Node.js-Anwendung zeigt die neuen Änderungen an.
Sie können jederzeit tippen. rs und treffen EINGEBENStarten Sie den Vorgang neu.
Andererseits sucht nodemon auch nach der Hauptdatei, die in der package.json-Datei Ihres Projekts angegeben ist:
{
// ...
"main": "server.js",
// ...
}Wenn keine Hauptdatei angegeben ist, sucht nodemon nach einem Startskript:
{
// ...
"scripts": {
"start": "node server.js"
},
// ...
}Sobald Sie die Änderungen an package.json vorgenommen haben, können Sie nodemon aufrufen, um die Beispielanwendung im Watch-Modus zu starten, ohne den Umweg über server.js gehen zu müssen.
Schritt 3 – nodemon-Optionen
Sie können die bestehenden Konfigurationseinstellungen für nodemon ändern.
Schauen wir uns einige der wichtigsten Optionen an:
- –exec: Verwenden Sie den Schalter –exec, um eine Binärdatei zur Ausführung der Datei anzugeben. In Kombination mit der Binärdatei ts-node kann –exec beispielsweise nützlich sein, um Änderungen zu überwachen und TypeScript-Dateien auszuführen.
- –ext: Gibt verschiedene Dateierweiterungen an, die überwacht werden sollen. Geben Sie hierfür eine durch Kommas getrennte Liste der Dateierweiterungen an (z. B. –ext js,ts).
- –delay: Standardmäßig wartet nodemon eine Sekunde, bevor der Prozess nach einer Dateiänderung neu gestartet wird. Mit dem Parameter –delay lässt sich jedoch eine andere Verzögerung festlegen. Beispielsweise bewirkt nodemon –delay 3.2 eine Verzögerung von 3,2 Sekunden.
- –watch: Verwenden Sie den Parameter –watch, um mehrere zu überwachende Verzeichnisse oder Dateien anzugeben. Fügen Sie für jedes zu überwachende Verzeichnis einen –watch-Parameter hinzu. Standardmäßig werden das aktuelle Verzeichnis und seine Unterverzeichnisse überwacht. Mit –watch können Sie die Überwachung auf bestimmte Unterverzeichnisse oder Dateien beschränken.
- –ignore: Verwenden Sie den Schalter –ignore, um bestimmte Dateien, Dateimuster oder Verzeichnisse zu ignorieren.
- –verbose: Eine ausführlichere Ausgabe mit Informationen darüber, welche Datei(en) geändert wurden, um den Systemstart neu zu starten.
Alle verfügbaren Optionen können Sie mit folgendem Befehl anzeigen:
nodemon --helpMithilfe dieser Optionen erstellen wir einen Befehl, der folgendes Szenario erfüllt:
- Überwachung des Serververzeichnisses
- Dateien mit der Dateiendung .ts angeben.
- Dateien mit der Erweiterung .test.ts werden ignoriert.
- Die Datei (server/server.ts) wird mit ts-node ausgeführt.
- Warten Sie drei Sekunden, bis das System nach der Dateiänderung neu gestartet wird.
nodemon --watch server --ext ts --exec ts-node --ignore '*.test.ts' --delay 3 server/server.ts
Die Terminalausgabe zeigt folgende Ausgabe an:
Output
[nodemon] 2.0.15
[nodemon] to restart at any time, enter `rs`
[nodemon] watching path(s): server
[nodemon] watching extensions: ts
[nodemon] starting `ts-node server/server.ts`Dieser Befehl kombiniert die Optionen –watch, –ext, –exec, –ignore und –delay, um den Anforderungen unseres Szenarios gerecht zu werden.
Schritt 4 – Nodemon konfigurieren
Im vorherigen Beispiel kann das Hinzufügen von Konfigurationsoptionen beim Ausführen von nodemon mühsam sein. Eine bessere Lösung für Projekte mit komplexen Einstellungen ist die Definition dieser Optionen in einer nodemon.json-Datei.
Hier sind beispielsweise dieselben Konfigurationen wie im vorherigen Befehlszeilenbeispiel, jedoch in einer nodemon.json-Datei gespeichert:
{
"watch": [
"server"
],
"ext": "ts",
"ignore": [
"*.test.ts"
],
"delay": "3",
"execMap": {
"ts": "ts-node"
}
}Beachten Sie die Verwendung von execMap anstelle des Schalters –exec. Mit execMap können Sie Binärdateien für bestimmte Dateierweiterungen angeben.
Alternativ können Sie, falls Sie keine nodemon.json-Konfigurationsdatei zu Ihrem Projekt hinzufügen möchten, diese Einstellungen in der package.json-Datei unter dem Schlüssel nodemonConfig hinzufügen:
{
"name": "nodemon-example",
"version": "1.0.0",
"description": "",
"nodemonConfig": {
"watch": [
"server"
],
"ext": "ts",
"ignore": [
"*.test.ts"
],
"delay": "3",
"execMap": {
"ts": "ts-node"
}
},
// ...Nachdem Sie Änderungen an nodemon.json oder package.json vorgenommen haben, können Sie nodemon mit dem gewünschten Skript starten:
nodemon server/server.tsnodemon übernimmt die Einstellungen und verwendet sie. Dadurch können Ihre Einstellungen gespeichert, geteilt und repliziert werden, um Fehler beim Kopieren und Einfügen oder bei der Eingabe in der Befehlszeile zu vermeiden.
Ergebnis
In diesem Artikel haben Sie gelernt, wie Sie nodemon mit Ihren Node.js-Anwendungen verwenden. Dieses Tool automatisiert das Starten und Stoppen Ihres Node-Servers, um Änderungen zu beobachten.









