node –watch în Node.js

Rulare și linie de comandă Node.js 18.11 (stabil din 22.0)

Repornește automat scriptul când salvezi fișierul sau unul dintre modulele importate, fără nodemon.

Sintaxă
node --watch fișier.js
node --watch-path=director fișier.js
node --watch --watch-preserve-output fișier.js

Ce face node --watch

În modul --watch, Node.js rulează scriptul și apoi urmărește fișierele lui. Când salvezi o modificare, oprește procesul și îl pornește din nou. Este util cât scrii un server sau un script: nu mai apeși Ctrl+C și săgeata sus după fiecare schimbare.

Implicit sunt urmărite fișierul de pornire și toate modulele încărcate cu import sau require. Cu --watch-path alegi tu ce directoare sau fișiere sunt urmărite (atunci modulele importate nu mai sunt urmărite automat). La fiecare repornire ecranul terminalului este golit; --watch-preserve-output păstrează ieșirea anterioară.

Modul este stabil din Node.js 22 și a înlocuit în multe proiecte unelte ca nodemon. Nu poate fi combinat cu -e, --check sau REPL-ul și cere neapărat un fișier. Se oprește cu Ctrl+C.

Parametri

Parametru Descriere
--watch Pornește modul de urmărire pentru fișierul dat și modulele lui.
--watch-path=cale Urmărește calea dată (poate apărea de mai multe ori). Dezactivează urmărirea automată a modulelor importate.
--watch-preserve-output Nu golește ecranul la repornire.
--watch-kill-signal=semnal Semnalul trimis procesului la repornire (implicit SIGTERM). Adăugat în 22.18 / 24.4, încă în dezvoltare activă.

Exemple

Exemplul 1: Repornire la salvare

Pornește scriptul în modul de urmărire, apoi adaugă în salut.mjs linia console.log("Salut din nou!"); și salvează. Mesajele „Completed running” și „Restarting” vin de la Node.js.

node --watch salut.mjs

Ieșire în terminal

Salut, lume!
Completed running 'salut.mjs'. Waiting for file changes before restarting...
Restarting 'salut.mjs'
Salut, lume!
Salut din nou!
Completed running 'salut.mjs'. Waiting for file changes before restarting...

Exemplul 2: Script de dezvoltare în package.json

De obicei modul de urmărire se pune într-un script. Aici sunt urmărite și directorul views (șabloane care nu sunt importate) și fișierul .env.

{
  "scripts": {
    "dev": "node --watch --watch-path=src --watch-path=views --env-file=.env src/server.mjs",
    "start": "node --env-file=.env src/server.mjs"
  }
}

Greșeli frecvente

  • Folosești --watch-path și te miri că modificările din modulele importate nu mai repornesc scriptul: cu --watch-path sunt urmărite doar căile date de tine. Adaugă și directorul cu sursele.
  • Pui --watch în scriptul de producție (start). Modul de urmărire este pentru dezvoltare; pe server folosește un manager de procese (systemd, pm2, Docker) care repornește aplicația la erori.
  • Scrii node salut.mjs --watch: opțiunile lui Node.js se pun înaintea numelui fișierului; ce vine după fișier ajunge în process.argv.

Comenzi înrudite

  • node script.js: Rulează un fișier JavaScript în terminal sau o bucată de cod dată direct în comandă (-e, -p).
  • node --env-file: Încarcă variabilele de mediu dintr-un fișier .env în process.env, fără pachetul dotenv.
  • node --run: Rulează un script din câmpul „scripts” al package.json direct cu Node.js, mai repede decât npm run.
  • npm run: Rulează un script din câmpul „scripts” al package.json, cu node_modules/.bin în PATH și cu scripturile pre/post.
  • fs.watch: Urmărește un fișier sau un director și anunță fiecare schimbare (fișier creat, modificat, redenumit, șters).