首頁 >web前端 >js教程 >使用nodemon並在node.js中觀看實時重新啟動

使用nodemon並在node.js中觀看實時重新啟動

Lisa Kudrow
Lisa Kudrow原創
2025-02-08 10:00:19402瀏覽

Using Nodemon and Watch in Node.js for Live Restarts

告別Node.js開發中反復重啟的繁瑣!本文介紹兩種方法,助您提升開發效率。

核心要點

  • 使用nodemon高效開發:我們將介紹nodemon,一個第三方Node.js模塊,它能有效解決每次代碼修改後都需要手動停止並重啟Node.js應用的難題。
  • nodemon配置選項:我們將涵蓋nodemon的各種配置選項,例如設置要監視的特定路徑、忽略特定路徑、監視特定文件擴展名、調整重啟延遲以及設置環境變量等。
  • Node.js --watch模式(適用於簡單應用):對於簡單的應用程序,如果您使用的是Node.js 18.11或更高版本,則可以使用Node.js的實驗性--watch選項。此內置功能會在任何導入文件更改時重新啟動應用程序,提供比nodemon更直接的替代方案,無需額外的第三方模塊。但是,它缺乏nodemon中可用的高級控制選項。

如果您有PHP開發經驗,您知道可以隨時更新代碼並刷新瀏覽器來測試更改。像Apache或NGINX這樣的Web服務器會接收您對PHP文件的請求,然後將內容傳遞給PHP解釋器執行代碼。服務器將生成的輸出(通常是HTML或JSON)返回給調用瀏覽器。換句話說,代碼在每次請求時都會動態運行。

Node.js對於Web應用程序採用不同的方法:您的JavaScript應用程序就是一個Web服務器。運行node index.js會初始化應用程序,加載所有模塊並啟動一個服務器,該服務器可以響應傳入的請求。更改文件不會影響應用程序的輸出,因為它已經在內存中運行。要測試更新,您必須使用Ctrl | Cmd C關閉它,然後再次運行node index.js

在調試期間或那些難得的專注工作時間裡,Node.js的停止和重啟過程會變得非常令人沮喪,尤其是在進行大量更改時。幸運的是,有兩種解決方案:

  1. nodemon
  2. Node.js --watch模式

nodemon

nodemon是由JavaScript專家Remy Sharp開發的第三方Node.js模塊。 (他說你可以隨意發音!)

您可以將nodemon安裝為全局模塊:

<code class="language-bash">npm install -g nodemon</code>

然後在開發啟動命令中用nodemon替換node。例如,考慮以下命令:

<code class="language-bash">node --inspect index.js arg1 arg2</code>

上面的命令現在將如下所示:

<code class="language-bash">nodemon --inspect index.js arg1 arg2</code>

您的應用程序將照常啟動,但是當您編輯並保存源文件時,它會自動重啟。無需按Ctrl | Cmd C並再次運行,儘管您可以鍵入rs並按Enter強制重啟。

注意:nodemon是一個服務器端解決方案,不會刷新您指向應用程序的任何瀏覽器選項卡。您可以使用Browsersync或esbuild等工具實現實時重新加載。

要獲取nodemon幫助,請輸入:

<code class="language-bash">npm install -g nodemon</code>

nodemon配置

nodemon有自己的一組命令行參數,這些參數優先於其他地方的配置。您也可以在以下位置定義配置:

  • 項目的package.json文件中的"nodemonConfig"部分
  • 項目目錄中的本地nodemon.json配置文件,和/或
  • 運行命令行中的nodemon --config <file></file>時使用的全局nodemon.json配置文件

以下參數/設置常用。

watch

nodemon監視當前工作目錄中的JavaScript文件,但您可以使用命令行上的通配符顯式設置特定路徑:

<code class="language-bash">node --inspect index.js arg1 arg2</code>

或者您可以在nodemon.json配置文件中執行此操作:

<code class="language-bash">nodemon --inspect index.js arg1 arg2</code>

ignore

類似地,您可以選擇忽略路徑:

<code class="language-bash">nodemon --help</code>

或者您可以在nodemon.json配置文件中執行此操作:

<code class="language-bash">nodemon --watch lib1 config/*.json ./index.js</code>

ext

您可以通過文件的擴展名來監視特定文件。例如,您可以像這樣監視js、cjs、mjs、json和njk模板文件:

<code class="language-json">{
  "watch": [
    "lib1",
    "config/*.json"
  ]
}</code>

或者您可以在nodemon.json配置文件中執行此操作:

<code class="language-bash">nodemon --ignore lib2 config/build.json ./index.js</code>

legacyWatch

在某些環境(例如從已掛載驅動器讀取文件的Docker容器)中,文件監視可能會失敗。切換到舊版監視模式使用輪詢來檢查文件是否已更改。從命令行:

<code class="language-json">{
  "ignore": [
    "lib2",
    "config/build.json"
  ]
}</code>

或者在nodemon.json配置文件中:

<code class="language-bash">nodemon --ext "js,cjs,mjs,json,njk" ./index.js</code>

delay

nodemon在觸發重啟之前等待一秒鐘。當您通常一次保存許多文件時,這很有用。您可以從命令行更改延遲——例如,更改為五秒鐘:

<code class="language-json">{
  "ext": "js,cjs,mjs,json,njk"
}</code>

或者在nodemon.json配置文件中(請注意,此配置使用毫秒而不是秒):

<code class="language-bash">nodemon --legacy-watch ./index.js</code>

verbose

顯示詳細的輸出日誌:

<code class="language-json">{
  "legacyWatch": true
}</code>

或者在nodemon.json配置文件中:

<code class="language-bash">nodemon --delay 5 ./index.js</code>

env

設置特定環境變量的nodemon.json配置文件:

<code class="language-json">{
  "delay": 5000
}</code>

其他可執行文件

最後,您可以使用nodemon啟動用其他語言編寫的應用程序。例如,要啟動自動重啟的perl腳本:

<code class="language-bash">nodemon --verbose ./index.js</code>

您還可以在nodemon.json配置文件中使用其擴展名定義可執行文件的列表:

<code class="language-json">{
  "verbose": true
}</code>

高級nodemon

如果您需要,nodemon提供更高級的功能:

  • 發送信號以便您可以優雅地處理關機
  • 當nodemon的狀態發生變化時觸發事件
  • 將輸出管道傳輸到其他進程
  • 將nodemon作為模塊加載到您的項目中
  • 將nodemon作為子進程生成,以及
  • 在Gulp和Grunt工作流程中使用nodemon。

Node.js --watch模式

如果您有復雜的應用程序啟動要求,nodemon仍然是首選工具。但是,如果您使用的是Node.js 18.11(2022年末發布)或更高版本,它提供了一個實驗性的--watch選項來重新啟動您的應用程序,而無需安裝nodemon或任何其他第三方模塊。例如,對於啟動命令:

<code class="language-bash">npm install -g nodemon</code>

這將變成:

<code class="language-bash">node --inspect index.js arg1 arg2</code>

當任何導入的文件更改時,Node.js都會重新啟動。沒有其他控制選項,因此如果它不適合您的項目,請考慮改用nodemon。

總結

隨著經驗的增長,您會發現自動重啟Node.js應用程序越來越有用。請將其視為所有項目中開發工作流程的一部分。

以上是使用nodemon並在node.js中觀看實時重新啟動的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn