nodemon je nástroj, který pomáhá při vývoji aplikací založených na node.js tím, že automaticky restartuje aplikaci node při zjištění změn souborů v adresáři.

nodemon nevyžaduje žádné další změny v kódu nebo způsobu vývoje. nodemon je náhradní wrapper pro node. Chcete-li použít nodemon, nahraďte slovo node na příkazovém řádku při spouštění skriptu.

Instalace

Buď klonováním pomocí git, nebo pomocí npm (doporučený způsob):

npm install -g nodemon

A nodemon bude nainstalován globálně do vaší systémové cesty.

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

npm install --save-dev nodemon

Při lokální instalaci nebude nodemon dostupný ve vaší systémové cestě. Místo toho lze místní instalaci nodemonu spustit jeho voláním ze skriptu npm (například npm start) nebo pomocí npx nodemon.

Použití

nodemon obaluje vaši aplikaci, takže mu můžete předat všechny argumenty, které byste normálně předávali své aplikaci:

nodemon 

Pro volby CLI použijte argument -h (nebo --help):

nodemon -h

Použití nodemonu je jednoduché, pokud by moje aplikace přijímala jako argumenty hostitele a port, spustil bych ji takto:

nodemon ./server.js localhost 8080

Jakýkoli výstup z tohoto skriptu je opatřen předponou , jinak bude veškerý výstup z vaší aplikace, včetně chyb, vypsán podle očekávání.

Pokud není zadán žádný skript, nodemon otestuje soubor package.json a pokud jej najde, spustí soubor spojený s hlavní vlastností (ref).

Příznak inspect můžete uzlu předat také prostřednictvím příkazového řádku jako obvykle:

nodemon --inspect ./server.js 80

Pokud máte pro svou aplikaci soubor package.json, můžete hlavní skript zcela vynechat a uzel nodemon načte package.json pro vlastnost main a použije tuto hodnotu jako aplikaci.

Nodemon bude také hledat vlastnost scripts.start v package.json (od verze nodemon 1.1.x).

Také se podívejte na často kladené otázky nebo problémy pro nodemon.

Automatické opětovné spuštění

Nodemon byl původně napsán pro restartování visících procesů, jako jsou webové servery, ale nyní podporuje aplikace, které se čistě ukončí. Pokud váš skript skončí čistě, nodemon bude nadále sledovat adresář (nebo adresáře) a v případě jakýchkoli změn skript restartuje.

Ruční restartování

Pokud je nodemon spuštěn, pokud potřebujete ručně restartovat aplikaci, můžete místo zastavení a restartu nodemonu napsat rs s návratem vozíku a nodemon váš proces restartuje.

Konfigurační soubory

nodemon podporuje místní a globální konfigurační soubory. Ty se obvykle jmenují nodemon.json a mohou být umístěny v aktuálním pracovním adresáři nebo ve vašem domovském adresáři. Alternativní lokální konfigurační soubor lze zadat pomocí volby --config <file>.

Specifikum je následující, takže argument příkazového řádku vždy potlačí nastavení konfiguračního souboru:

  • argumenty příkazového řádku
  • lokální konfigurace
  • globální konfigurace

Konfigurační soubor může přebírat kterýkoli z argumentů příkazového řádku jako hodnoty klíče JSON, např:

{ "verbose": true, "ignore": , "execMap": { "rb": "ruby", "pde": "processing --sketch={{pwd}} --run" }}

Výše uvedený soubor nodemon.json může být můj globální konfigurační soubor, takže mám podporu pro soubory ruby a soubory pro zpracování a mohu spustit nodemon demo.pde a nodemon bude automaticky vědět, jak spustit skript, i když z krabice podporuje skripty pro zpracování.

Další příklad možností si můžete prohlédnout v souboru sample-nodemon.md

package.json

Pokud chcete mít všechny konfigurace balíčků na jednom místě, nodemon podporuje použití package.json pro konfiguraci.Zadejte konfiguraci ve stejném formátu jako u konfiguračního souboru, ale pod nodemonConfig v souboru package.json, například vezměte následující package.json:

{ "name": "nodemon", "homepage": "http://nodemon.io", "...": "... other standard package.json values", "nodemonConfig": { "ignore": , "delay": "2500" }}

Všimněte si, že pokud zadáte soubor --config nebo poskytnete místní nodemon.json, bude jakákoli konfigurace package.json ignorována.

Tato část potřebuje lepší dokumentaci, ale prozatím se můžete podívat na nodemon --help config (také zde).

Použití nodemonu jako modulu

Prosím, podívejte se na doc/requireable.md

Použití nodemonu jako podřízeného procesu

Prosím, podívejte se na doc/events.md

Spouštění jiných než uzlových skriptů

nodemon lze také použít ke spouštění a monitorování jiných programů. Nodemon bude číst příponu spouštěného skriptu a monitorovat tuto příponu místo .js, pokud není nodemon.json:

nodemon --exec "python -v" ./app.py

Nyní bude nodemon spouštět app.py s pythonem v režimu verbose (všimněte si, že pokud nepředáváte programu exec argumenty, nepotřebujete uvozovky) a hledat nové nebo změněné soubory s příponou .py.

Výchozí spustitelné soubory

Pomocí konfiguračního souboru nodemon.json můžete definovat vlastní výchozí spustitelné soubory pomocí vlastnosti execMap. To je užitečné zejména v případě, že pracujete s jazykem, který není ve výchozím nastavení podporován programem nodemon.

Chcete-li přidat podporu pro to, aby nodemon věděl o příponě .pl (pro Perl), do souboru nodemon.json přidejte:

{ "execMap": { "pl": "perl" }}

Při spuštění následujícího bude nodemon vědět, že má jako spustitelný soubor použít perl:

nodemon script.pl

Obvykle se doporučuje používat globální nodemon.json pro přidání vlastních voleb execMap. Pokud však nějaká běžná výchozí volba chybí, lze ji začlenit do projektu tak, aby ji nodemon podporoval ve výchozím nastavení, a to změnou souboru default.js a zasláním žádosti o stažení.

Sledování více adresářů

Ve výchozím nastavení nodemon sleduje aktuální pracovní adresář. Pokud chcete převzít kontrolu nad touto volbou, použijte volbu --watch a přidejte konkrétní cesty:

nodemon --watch app --watch libs app/server.js

Nyní se nodemon restartuje pouze v případě změn v adresáři ./app nebo ./libs. Ve výchozím nastavení bude nodemon procházet podadresáře, takže není třeba explicitně zahrnovat podadresáře.

Nepoužívejte unixový globbing pro předání více adresářů, např. --watch ./lib/*, nebude to fungovat. Potřebujete příznak --watch pro každý sledovaný adresář.

Určení seznamu sledovaných přípon

nodemon -e js,pug

Nyní se nodemon restartuje při jakékoliv změně souborů v adresáři (nebo podadresářích) s příponami .js, .pug.

Ignorování souborů

Ve výchozím nastavení se nodemon restartuje pouze při změně souboru .js JavaScript. V některých případech budete chtít ignorovat některé konkrétní soubory, adresáře nebo vzory souborů, abyste zabránili předčasnému restartování aplikace nodemonem.

To lze provést pomocí příkazového řádku:

nodemon --ignore lib/ --ignore tests/

Nebo lze ignorovat konkrétní soubory:

nodemon --ignore lib/app.js

Vzory lze také ignorovat (nezapomeňte však uvést argumenty):

nodemon --ignore 'lib/*.js'

Všimněte si, že ve výchozím nastavení bude nodemon ignorovat adresáře .git, node_modules, bower_components, .nyc_output, coverage a .sass-cache a přidá vaše ignorované vzory do seznamu. Pokud chcete skutečně sledovat adresář jako node_modules, musíte přepsat základní výchozí pravidla pro ignorování.

Aplikace se nerestartuje

V některých síťových prostředích (například kontejner se spuštěným nodemonem, který čte přes připojený disk) budete muset použít legacyWatch: true, který povolí dotazování Chokidaru.

Přes CLI použijte buď --legacy-watch nebo -L pro zkrácení:

nodemon -L

Ačkoli by to měla být poslední možnost, protože bude dotazovat každý soubor, který najde.

Odložení restartování

V některých situacích můžete chtít počkat, až se změní řada souborů. Časový limit před kontrolou nových změn souborů je 1 sekunda. Pokud nahráváte řadu souborů a trvá to určitý počet sekund, může to způsobit, že se aplikace zbytečně několikrát restartuje.

Chcete-li přidat další plyn nebo zpozdit restartování, použijte příkaz --delay:

nodemon --delay 10 server.js

Pro větší přesnost lze zadat milisekundy. Buď jako float:

nodemon --delay 2.5 server.js

Nebo pomocí specifikátoru času (ms):

nodemon --delay 2500ms server.js

Údaj o zpoždění je počet sekund (nebo milisekund, pokud je zadán), které se mají před restartem odložit. Nodemon tedy restartuje aplikaci až po uplynutí daného počtu sekund od poslední změny souboru.

Pokud tuto hodnotu nastavujete v nodemon.json, bude hodnota vždy interpretována v milisekundách. Např, následující hodnoty jsou ekvivalentní:

nodemon --delay 2.5{ "delay": "2500"}

Gracefully reloading down your script

Je možné, aby nodemon odeslal aplikaci libovolný signál, který zadáte.

nodemon --signal SIGHUP server.js

Vaše aplikace může signál zpracovat následujícím způsobem.

process.once("SIGHUP", function () { reloadSomeConfiguration();})

Vezměte prosím na vědomí, že nodemon pošle tento signál každému procesu ve stromu procesů.

Pokud používáte cluster, pak tento signál obdrží každý worker (i master). Pokud si přejete ukončit všechny workery při přijetí signálu SIGHUP, běžným vzorem je zachytit SIGHUP v masteru a předat SIGTERM všem workerům, přičemž zajistíte, aby všichni workeři ignorovali SIGHUP.

Řízení vypínání skriptu

nodemon vyšle vaší aplikaci signál kill, když uvidí aktualizaci souboru. Pokud potřebujete provést úklid při vypnutí uvnitř vašeho skriptu, můžete zachytit signál kill a zpracovat jej sami.

Následující příklad jednou vyslechne signál SIGUSR2 (používaný nodemonem k restartu), spustí proces úklidu a pak se sám zabije, aby nodemon mohl pokračovat v řízení:

process.once('SIGUSR2', function () { gracefulShutdown(function () { process.kill(process.pid, 'SIGUSR2'); });});

Všimněte si, že process.kill je volán až po dokončení vašich úloh pro vypnutí. Hat tip to Benjie Gillam for writing this technique up.

Spouštění událostí při změně stavu nodemonu

Pokud chcete, aby se při restartu nodemonu objevila oznámení typu growl nebo aby se při nějaké události spustila akce, pak můžete buď require nodemon nebo přidat akce událostí do souboru nodemon.json.

Příklad pro spuštění oznámení na Macu při restartu nodemonu vypadá nodemon.json takto:

{ "events": { "restart": "osascript -e 'display notification \"app restarted\" with title \"nodemon\"'" }}

Úplný seznam dostupných událostí je uveden na wiki o stavech událostí. Všimněte si, že se můžete vázat jak na stavy, tak na zprávy.

Pipe výstup někam jinam

Použití nodemonu v pracovním postupu gulp

Podívejte se na zásuvný modul gulp-nodemon, který umožňuje integrovat nodemon se zbytkem pracovního postupu gulp vašeho projektu.

Použití nodemonu v pracovním postupu gruntu

Vyzkoušejte zásuvný modul grunt-nodemon pro integraci nodemonu se zbytkem pracovního postupu gruntu vašeho projektu.

Výslovnost

Nodemon, vyslovuje se: node-mon, no-demon nebo node-e-mon (jako pokémon)?“

No… na to už jsem se ptal mnohokrát. Líbí se mi, že se mě na to už někdo ptal. Byly tu sázky, který z nich to vlastně je.

Odpověď je jednoduchá, ale možná frustrující. Neříkám (jak to vyslovuji). Je na vás, abyste to nazvali, jak chcete. Všechny odpovědi jsou správné 🙂

Zásady návrhu

  • Méně příznaků je lépe
  • Funguje na všech platformách
  • Méně funkcí
  • Nechte jednotlivce. stavět nad nodemonem
  • Nabídnout všechny funkce CLI jako API
  • Příspěvky musí mít a projít testy

Nodemon není dokonalý, a argumenty CLI se rozrostly nad rámec toho, kde jsem úplně spokojený, ale snad se to jednou podaří trochu zredukovat.

Často kladené otázky

Podívejte se na často kladené otázky a přidejte prosím své vlastní, pokud si myslíte, že by pomohly ostatním.

Podporovatelé

Děkujeme všem našim podporovatelům! 🙏

Sponzoři

Podpořte tento projekt tím, že se stanete jeho sponzorem. Zobrazí se zde vaše logo s odkazem na vaše webové stránky. Sponzorujte tento projekt ještě dnes ❤️

Licence

MIT http://rem.mit-license.org

.

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna.