Nodemon für JavaScript (Node.js): Komplettguide mit Beispielen

Online Python-Trainer für Anfänger

Lernen Sie Python einfach ohne theoretische Überlastung. Lösen Sie praktische Aufgaben mit automatischer Überprüfung und schreiben Sie Code direkt im Browser.

Kurs starten

Nodemon für JavaScript (Node.js): Komplettguide mit Beispielen

1. Was ist Nodemon und wozu braucht man es?

Nodemon ist ein Hilfsprogramm für die Node.js-Entwicklung, das den Server (oder jede andere Node.js-Anwendung) automatisch neu startet, sobald Änderungen an Projektdateien erkannt werden. Es ist ein unverzichtbares Werkzeug für Webentwickler, die mit Express, Koa, Fastify und anderen Frameworks arbeiten. Anstatt den Server nach jeder Codeänderung manuell zu stoppen und neu zu starten, übernimmt Nodemon diese Aufgabe für Sie, indem es das Dateisystem überwacht und auf Speicherereignisse reagiert.

Die Hauptaufgabe von Nodemon ist es, den Entwicklungszyklus zu beschleunigen. Ohne Nodemon verschwendet der Entwickler Zeit mit sich wiederholenden Aktionen: Strg+C, Pfeiltaste nach oben, Enter. Mit Nodemon ist dieser Prozess vollständig automatisiert. Es startet den Prozess nicht nur neu, sondern beendet auch die vorherige Instanz ordnungsgemäß, gibt Ports und Ressourcen frei. Darüber hinaus kann Nodemon bestimmte Dateien und Ordner ignorieren (z. B. node_modules oder .git), was die CPU- und Festplattenlast reduziert.

Wichtig zu verstehen: Nodemon ist keine Bibliothek im klassischen Sinne (wie Lodash oder Axios), sondern ein CLI-Tool (Command Line Interface). Es ist nicht dafür gedacht, als Modul in den Code importiert zu werden (obwohl dies technisch über die API möglich ist). Die Hauptnutzung erfolgt über die Befehlszeile oder über Skripte in der package.json. Nodemon unterstützt alle Betriebssysteme (Windows, macOS, Linux) und funktioniert mit jeder Node.js-Version.

2. Installation

Nodemon wird über npm (Node Package Manager) installiert. Es wird empfohlen, es global oder als dev-Abhängigkeit im Projekt zu installieren.

Globale Installation (für alle Projekte):

npm install -g nodemon

Lokale Installation (für ein bestimmtes Projekt):

npm install --save-dev nodemon

Nach der lokalen Installation können Sie Nodemon über npx ausführen oder ein Skript in der package.json hinzufügen:

{
  "scripts": {
    "dev": "nodemon app.js"
  }
}

Dann starten Sie es mit: npm run dev.

3. Schnellstart – Minimales Arbeitsbeispiel

Erstellen Sie eine Datei app.js mit einem einfachen HTTP-Server:

const http = require('http');

const server = http.createServer((req, res) => {
  res.writeHead(200, { 'Content-Type': 'text/plain' });
  res.end('Hallo, Welt!\n');
});

const PORT = 3000;
server.listen(PORT, () => {
  console.log(`Server läuft unter http://localhost:${PORT}/`);
});

Starten Sie nun Nodemon:

nodemon app.js

Sie sehen folgende Ausgabe:

[nodemon] 3.1.0
[nodemon] to restart at any time, enter `rs`
[nodemon] watching path(s): *.*
[nodemon] watching extensions: js,mjs,cjs,json
[nodemon] starting `node app.js`
Server läuft unter http://localhost:3000/

Ändern Sie den Text in res.end() zu 'Hallo, Nodemon!\n' und speichern Sie die Datei. Nodemon startet den Server automatisch neu, und Sie sehen die aktualisierte Antwort, wenn Sie die Seite im Browser aktualisieren.

4. Wichtige Methoden/Funktionen/Klassen

Nodemon bietet sowohl ein CLI-Interface als auch eine programmatische API. Nachfolgend finden Sie die wichtigsten Methoden und Funktionen mit Beispielen.

4.1. nodemon([options]) – Programmatischer Start

Signatur: nodemon([options: Object])

Funktion: Startet Nodemon programmatisch aus einem Node.js-Skript. Ermöglicht eine fein abgestimmte Konfiguration und Ereignisbehandlung.

Beispiel:

const nodemon = require('nodemon');

nodemon({
  script: 'app.js',
  ext: 'js json html',
  ignore: ['node_modules/', 'test/'],
  env: { NODE_ENV: 'development' }
});

nodemon.on('start', () => {
  console.log('Nodemon wurde gestartet!');
}).on('quit', () => {
  console.log('Nodemon wurde beendet.');
  process.exit();
}).on('restart', (files) => {
  console.log('Neustart wegen Änderungen an:', files);
});

Empfehlungen