Automaticky restartujte uzlové aplikace při změně souboru pomocí nodemon

Úvod

Nodemon je balík nástrojů s otevřeným zdrojovým kódem, který sleduje změny provedené ve zdrojovém kódu a automaticky restartuje váš projektový server, když jsou provedeny nové úpravy.

Nabízí také některé unikátní funkce, jako je schopnost sledovat adresář spíše než pouhé soubory, stejně jako ignorovat konkrétní soubory, které mohou být přítomny v daném adresáři.

Proč Nodemon?

Tradičně, když spouštíme Node aplikace, používáme node příkaz spolu s názvem souboru:

$ node app.js

To spouští aplikaci Node tak, že načte nejnovější soubory a jejich nejnovější stavy a použije je tak, jak jsou. Tento stav je uložen a přetrvává v paměti když je aplikace spuštěna, takže i když upravíte zdrojové soubory – to se v aktuálně spuštěné aplikaci neprojeví.

Jakmile přestanete původní obsah souborů je uvolněn z paměti a stav je ztracen, dokud jej znovu nenačtete spuštěním aplikace. Pokud jste změnili soubory - použije se nový stav a aplikace se při opětovném spuštění aktualizuje.

Během vývoje – obvykle spouštíme a zastavujeme aplikace mnohokrát abychom „otestovali“, zda něco, co jsme napsali, funguje podle očekávání. Často se jedná o malé změny, jako je změna barvy tlačítka nebo přidání prvku na danou pozici. Rychle začne být otravné muset restartovat celý projekt kvůli malým změnám během vývoje.

Instalace Nodemon

Nejrychlejší způsob, jak začít s Nodemonem, je nainstalovat jej jako globální npm balíček:

$ npm install -g nodemon

Nodemon můžete také nainstalovat jako vývojovou závislost pouze pro jeden projekt:

$ npm install --save-dev nodemon

Začínáme s Nodemon

Jakmile je balíček nainstalován - lze jej použít místo node příkaz při spuštění projektu. Místo toho můžete použít obal nodemon příkaz, který jistě spouští aplikaci stejně jako node ano, ale také sleduje soubory v adresáři a spouští restart při každé změně souborů.

Poznámka: Pokud nainstalujete balíček globálně, příkaz bude dostupný globálně. Pokud jste jej nainstalovali pro projekt, bude k dispozici pouze v adresáři vašeho projektu.

Řekněme, že máme soubor app.js , ve kterém vygenerujeme náhodné číslo a zobrazíme ho na konzoli:

let randNo = Math.floor(Math.random() * 10);
console.log(randNo);

Tento soubor pak můžeme spustit pomocí Nodemon:

$ nodemon app.js
[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 app.js`
6
[nodemon] clean exit - waiting for changes before restart

Poznámka: Pokud narazíte na chybu:nodemon: command not found - spusťte jej přes npx .

$ npx nodemon app.js
[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 app.js`
8
[nodemon] clean exit - waiting for changes before restart

Nyní, pokud byste v souboru něco změnili a uložili změnu, abyste ji potvrdili do systému souborů, jako je přidání mezery za poslední řádek – jakmile soubor uložíte, projekt se restartuje a další , zobrazí se nové číslo:

$ npx nodemon app.js
[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 app.js`
8
[nodemon] clean exit - waiting for changes before restart
[nodemon] restarting due to changes...
[nodemon] starting `node app.js`
6
[nodemon] clean exit - waiting for changes before restart

Zde jsou uvedeny další informace! Nodemon sleduje soubory s určitými příponami - js , mjs a json . Navíc sleduje určitou cestu. Pojďme se podívat na to, jak přizpůsobit, kterou cestu Nodemon sleduje.

Sledované adresáře

nodemon příkaz také podporuje --watch příznak pro sledování různých adresářů. Za předpokladu, že máme adresář app , který chceme, aby Nodemon monitoroval, jednoduše dodáme adresář za --watch příznak:

$ nodemon --watch app

A pokud například máme více adresářů jako v následující struktuře:

app
views
utils
public/
  index.html

Můžeme přidat --watch příznak pro každý adresář, abyste je zahrnuli:

$ nodemon --watch app --watch views --watch utils --watch public

Ignorovat soubory a adresář

Je také možné říci Nodemon, aby se vyhnul sledování určitých souborů a složek, což je užitečné, pokud nechcete, aby Nodemon restartoval vaše soubory předčasně nebo příliš často, zvláště pokud je soubor neustále měněn programově, například soubor protokolu.

Můžeme to udělat pomocí --ignore příznak:

$ nodemon --ignore views/ --ignore public/index.js

Zpoždění restartu

I když odkládání restartu není příliš časté, jsou chvíle, kdy soubory, které chcete sledovat, nejsou okamžitě dostupné nebo se dávka souborů postupně aktualizuje. Při každé změně bude proveden restart, takže aplikace bude restartována několikrát.

Zdarma e-kniha:Git Essentials

Prohlédněte si našeho praktického průvodce učením Git s osvědčenými postupy, průmyslově uznávanými standardy a přiloženým cheat sheetem. Přestaňte používat příkazy Google Git a skutečně se naučte to!

Když Nodemon zareaguje na změněný soubor, můžete zpozdit nastavením --delay příznak následovaný zpožděním v sekundách:

$ nodemon --delay 5 app.js

Zde jsme přidali 5sekundovou prodlevu (dobu čekání), než Nodemon zareaguje na změnu. Jakékoli změny provedené mezi těmito 5 sekundami restartují časovač zpoždění a budou ignorovat změny provedené dříve, pouze se provede restart pro poslední změnu.

Je také možné zadat zpoždění v milisekundách:

// Set delay for 10 seconds 50 milliseconds.
$ nodemon --delay 10.5 app.js

// Set delay for 2000 miliseconds.
$ nodemon --delay 2000ms app.js

Závěr

Nodemon vám umožňuje automatizovat proces restartování aplikací Node, když provedete změny v podkladových souborech. To není problém sám o sobě, ale může se stát nepříjemným při opakovaném restartování aplikace během vývoje.

Sleduje změny ve zdrojovém adresáři a bezproblémově restartuje vaše aplikace Node a umožňuje přizpůsobení v procesu.