告別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的停止和重啟過程會變得非常令人沮喪,尤其是在進行大量更改時。幸運的是,有兩種解決方案:
--watch
模式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有自己的一組命令行參數,這些參數優先於其他地方的配置。您也可以在以下位置定義配置:
package.json
文件中的"nodemonConfig"
部分nodemon.json
配置文件,和/或nodemon --config <file></file>
時使用的全局nodemon.json
配置文件以下參數/設置常用。
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>
類似地,您可以選擇忽略路徑:
<code class="language-bash">nodemon --help</code>
或者您可以在nodemon.json
配置文件中執行此操作:
<code class="language-bash">nodemon --watch lib1 config/*.json ./index.js</code>
您可以通過文件的擴展名來監視特定文件。例如,您可以像這樣監視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>
在某些環境(例如從已掛載驅動器讀取文件的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>
nodemon在觸發重啟之前等待一秒鐘。當您通常一次保存許多文件時,這很有用。您可以從命令行更改延遲——例如,更改為五秒鐘:
<code class="language-json">{ "ext": "js,cjs,mjs,json,njk" }</code>
或者在nodemon.json
配置文件中(請注意,此配置使用毫秒而不是秒):
<code class="language-bash">nodemon --legacy-watch ./index.js</code>
顯示詳細的輸出日誌:
<code class="language-json">{ "legacyWatch": true }</code>
或者在nodemon.json
配置文件中:
<code class="language-bash">nodemon --delay 5 ./index.js</code>
設置特定環境變量的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仍然是首選工具。但是,如果您使用的是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中文網其他相關文章!