Tutorial

So starten Sie Ihre Node.js-Apps automatisch mit nodemon neu

Published on November 23, 2020
Default avatar

By Alligator.io

Deutsch
So starten Sie Ihre Node.js-Apps automatisch mit nodemon neu

Einführung

In Node.js müssen Sie den Prozess neu starten, um Änderungen zu übernehmen. Dadurch wird Ihrem Workflow ein zusätzlicher Schritt hinzugefügt, um die Änderungen durchzuführen. Sie können diesen zusätzlichen Schritt durch Verwendung von nodemon eliminieren, um den Prozess automatisch neu zu starten.

nodemon ist ein von @rem entwickeltes CLI-Dienstprogramm (Command Line Interface), das Ihre Node-App umschließt, das Dateisystem überwacht und den Prozess automatisch neu startet.

In diesem Artikel erfahren Sie mehr über die Installation, Einrichtung und Konfiguration von nodemon.

Voraussetzungen

Wenn Sie diesem Artikel folgen möchten, benötigen Sie Folgendes:

Schritt 1 — Installieren von nodemon

Zuerst müssen Sie nodemon auf Ihrem Rechner installieren. Installieren Sie das Dienstprogramm entweder global oder lokal mit npm oder Yarn:

Globale Installation

Sie können nodemon global mit npm installieren:

  1. npm install nodemon -g

Oder mit Yarn:

  1. yarn global add nodemon

Lokale Installation

Sie können nodemon auch lokal mit npm installieren. Bei der Ausführung einer lokalen Installation können wir nodemon als dev-Abhängigkeiten mit --save-dev (oder --dev) installieren:

  1. npm install nodemon --save-dev

Oder mit Yarn:

  1. yarn add nodemon --dev

Eine Sache, die Sie bei einer lokalen Installation wissen sollten, ist, dass Sie den Befehl nodemon nicht direkt aus der Befehlszeile verwenden können:

  1. Output
    command not found: nodemon

Sie können es jedoch als Teil von einigen npm Scripts oder mit npx verwenden.

Dadurch wird der Prozess der Installation von nodemon abgeschlossen. Als Nächstes verwenden wir nodemon mit unseren Projekten.

Schritt 2 — Einrichten eines Beispiel-Express-Projekts mit nodemon

Wir können nodemon verwenden, um ein Node Script zu starten. Wenn wir beispielsweise ein Express-Server-Setup in einer server.js-Datei haben, können wir es starten und für Änderungen wie folgt ansehen:

  1. nodemon server.js

Sie können Argumente so übergeben, als ob Sie das Script mit Node ausführen:

  1. nodemon server.js 3006

Jedesmal, wenn Sie eine Änderung in einer Datei mit einer der Standarderweiterung (.js, .mjs, .json, .coffee oder .litcoffee) im aktuellen Verzeichnis oder einem Unterverzeichnis vornehmen, wird der Prozess neu starten.

Nehmen wir an, wir schreiben eine Beispieldatei server.js, die die Nachricht ausgibt: Dolphin-App hört auf Port ${port} zu.

Wir können das Beispiel mit nodemon ausführen:

  1. nodemon server.js

Wir sehen die Terminalausgabe:

Output
[nodemon] 1.17.3 [nodemon] to restart at any time, enter `rs` [nodemon] watching: *.* [nodemon] starting `node server.js` Dolphin app listening on port 3000!

Zwar wird nodemon noch immer ausgeführt, doch lassen Sie uns eine Änderung in der Datei server.js vornehmen, um die Nachricht auszugeben: Shark-App hört auf Port ${port} zu!

Wir sehen die folgende zusätzliche Terminalausgabe:

Output
[nodemon] restarting due to changes... [nodemon] starting `node server.js` Shark app listening on port 3000!

Die Terminalausgabe aus unserer Node.js-App wird wie erwartet angezeigt. Sie können den Prozess jederzeit neu starten, indem Sie rs eingeben und die ENTER drücken.

Alternativ sucht nodemon auch nach einer Hauptdatei, die in der Datei package.json Ihres Projekts angegeben ist:

package.json
{
  // ...
  "main": "server.js",
  // ...
}

Oder ein Startskript:

package.json
{
  // ...
  "scripts": {
    "start": "node server.js"
  },
  // ...
}

Sobald Sie die Änderungen an package.json vornehmen, können Sie nodemon aufrufen, um die Beispiel-App im Beobachtungsmodus zu starten, ohne dass Sie server.js übergeben müssen.

Schritt 3 — Verwenden von Optionen

Sie können die Konfigurationseinstellungen für nodemon ändern.

Gehen wir über einige der wichtigsten Optionen:

  • --exec: Verwenden Sie den Schalter --exec, um ein Binärsystem anzugeben, mit dem die Datei ausgeführt werden soll. In Kombination mit der Binärdatei ts-node kann --exec beispielsweise nützlich werden, um Änderungen zu beobachten und TypeScript-Dateien auszuführen.
  • --ext: Geben Sie verschiedene Dateierweiterungen an, um zu beobachten. Stellen Sie für diesen Schalter eine mit Komma getrennte Liste der Dateierweiterungen (z. B. -ext js,ts) bereit.
  • --delay: Standardmäßig wartet nodemon eine Sekunde, um den Prozess neu zu starten, wenn sich eine Datei ändert, aber mit dem Schalter --delay können Sie eine andere Verzögerung angeben. Beispielsweise nodemon --delay 3.2 für eine 3,2-Sekunden-Verzögerung.
  • --watch: Verwenden Sie den Schalter --watch, um mehrere Verzeichnisse oder Dateien anzugeben, die Sie beobachten können. Fügen Sie für jedes Verzeichnis, das Sie beobachten möchten, einen --watch-Schalter hinzu. Standardmäßig werden das aktuelle Verzeichnis und seine Unterverzeichnisse beobachtet, sodass Sie mit --watch die Beobachtung auf nur bestimmte Unterverzeichnisse oder Dateien beschränken können.
  • --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 wurde(n), um einen Neustart auszulösen.

Sie können mit dem folgenden Befehl alle verfügbaren Optionen anzeigen:

  1. nodemon --help

Durch Verwendung dieser Optionen erstellen wir den Befehl, um das folgende Szenario zu erfüllen:

  • Beobachten des Server-Verzeichnisses
  • Spezifizieren von Dateien mit einer .ts-Erweiterung
  • Ignorieren von Dateien mit einer .test.ts-Endung
  • Ausführung der Datei (server/server.ts) mit ts-node
  • warten für drei Sekunden bis zum Neustart nach einer Dateiänderung
  1. nodemon --watch server --ext ts --exec ts-node --ignore '*.test.ts' --delay 3 server/server.ts

Dieser Befehl kombiniert --watch, --ext, --exec, --ignore und --delay-Optionen, um die Bedingungen für unser Szenario zu erfüllen.

Schritt 4 — Verwenden von Konfigurationen

Im vorherigen Beispiel kann das Hinzufügen von Konfigurationsschaltern bei der Ausführung von nodemon ziemlich mühsam werden. Eine bessere Lösung für Projekte, die spezifische Konfigurationen benötigen, ist die Angabe dieser Konfigurationen in einer Datei nodemon.json.

Beispielsweise sind hier die gleichen Konfigurationen wie bei der vorherigen Befehlszeile, aber in einer Datei nodemon.json platziert:

nodemon.json
{
  "watch": ["server"],
  "ext": "ts",
  "ignore": ["*.test.ts"],
  "delay": "3",
  "execMap": {
    "ts": "ts-node"
  }
}

Beachten Sie die Verwendung von execMap anstelle des Schalters --exec. execMap ermöglicht es Ihnen, Binärdateien anzugeben, die bei bestimmten Dateierweiterungen verwendet werden sollten.

Wenn Sie Ihrem Projekt lieber keine Konfigurationsdatei nodemon.json hinzufügen möchten, können Sie alternativ diese Konfigurationen unter einem Schlüssel nodemonConfig der Datei package.json hinzufügen:

package.json
{
  "name": "test-nodemon",
  "version": "1.0.0",
  "description": "",
  "nodemonConfig": {
    "watch": [
      "server"
    ],
    "ext": "ts",
    "ignore": [
      "*.test.ts"
    ],
    "delay": "3",
    "execMap": {
      "ts": "ts-node"
    }
  },
  // ...

Sobald Sie die Änderungen an entweder nodemon.json oder package.json vornehmen, können Sie nodemon mit dem gewünschten Script starten:

  1. nodemon server/server.ts

nodemon nimmt die Konfigurationen auf und verwendet sie. Auf diese Weise können Ihre Konfigurationen gespeichert, geteilt und wiederholt werden, um Fehler beim Kopieren und Einfügen oder Tippfehler in der Befehlszeile zu vermeiden.

Zusammenfassung

In diesem Artikel haben Sie erkundet, wie Sie nodemon mit Ihren Node.js-Anwendungen verwenden. Dieses Tool hilft dabei, den Prozess des Anhaltens und Startens eines Node-Servers zu automatisieren, um die Änderungen anzuzeigen.

Weitere Informationen zu den verfügbaren Funktionen und Fehlerbehebungen finden Sie in der offiziellen Dokumentation.

Wenn Sie mehr über Node.js erfahren möchten, lesen Sie unsere Themenseite zu Node.js für Übungen und Programmierprojekte.

Thanks for learning with the DigitalOcean Community. Check out our offerings for compute, storage, networking, and managed databases.

Learn more about us


About the authors
Default avatar
Alligator.io

author



Still looking for an answer?

Ask a questionSearch for more help

Was this helpful?
 
Leave a comment


This textbox defaults to using Markdown to format your answer.

You can type !ref in this text area to quickly search our full set of tutorials, documentation & marketplace offerings and insert the link!

Try DigitalOcean for free

Click below to sign up and get $200 of credit to try our products over 60 days!

Sign up

Join the Tech Talk
Success! Thank you! Please check your email for further details.

Please complete your information!

Get our biweekly newsletter

Sign up for Infrastructure as a Newsletter.

Hollie's Hub for Good

Working on improving health and education, reducing inequality, and spurring economic growth? We'd like to help.

Become a contributor

Get paid to write technical tutorials and select a tech-focused charity to receive a matching donation.

Welcome to the developer cloud

DigitalOcean makes it simple to launch in the cloud and scale up as you grow — whether you're running one virtual machine or ten thousand.

Learn more
DigitalOcean Cloud Control Panel