JavaScript >> Javascript 文檔 >  >> Tags >> APP

使用 nodemon 在文件更改時自動重啟節點應用程序

簡介

Nodemon 是一個開源實用程序包,可跟踪對源代碼所做的更改,並在進行新的修改時自動重新啟動項目服務器。

它還提供了一些獨特的功能,例如能夠查看目錄而不是簡單的文件,以及忽略給定目錄中可能存在的特定文件。

為什麼選擇 Nodemon?

傳統上,當我們運行 Node 應用程序時,我們使用 node 命令連同文件名:

$ node app.js

這很好,通過加載最新文件及其最新狀態並按原樣使用它們來運行 Node 應用程序。此狀態駐留在內存中 在應用程序運行時,因此即使您修改了源文件 - 這也不會反映在當前運行的應用程序中。

一旦你停止 應用程序,文件的原始內容從內存中釋放,並且狀態丟失,直到您通過運行應用程序再次加載它。如果您更改了文件 - 使用新狀態並在再次運行時更新應用程序。

在開發過程中 - 我們通常多次啟動和停止應用程序 “測試”我們寫的東西是否按預期工作。這些通常是小的更改,例如更改按鈕的顏色,或在給定位置添加元素。很快,在開發過程中不得不重新啟動整個項目以進行小的更改會很煩人。

安裝 Nodemon

開始使用 Nodemon 的最快方法是將其安裝為全局 npm 包裝:

$ npm install -g nodemon

您還可以將 Nodemon 安裝為單個項目的開發依賴項:

$ npm install --save-dev nodemon

Nodemon 入門

一旦安裝包 - 它可以用來代替 node 運行項目時的命令。相反,您可以使用包裝器 nodemon 命令,它確實可以像 node 一樣運行應用程序 確實如此,但它也會跟踪目錄中的文件,並在文件更改時觸發重新啟動。

注意: 如果您全局安裝該軟件包,該命令將在全局範圍內可用。如果你為項目安裝了它,它只會在你的項目目錄中可用。

假設我們有一個文件 app.js ,其中我們生成一個隨機數並顯示在控制台上:

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

然後我們可以用 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

注意: 如果遇到錯誤:nodemon: command not found - 通過 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

現在,如果您要更改文件中的任何內容,並保存更改以將其提交到文件系統,例如在最後一行之後添加一個空格 - 一旦您保存文件,項目將重新啟動,另一個,將顯示新號碼:

$ 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

在這裡,我們得到了一些額外的信息! Nodemon 正在監視具有某些擴展名的文件 - js , mjsjson .此外,它正在觀察某個路徑。下面我們來看看如何自定義 Nodemon 監視的路徑。

觀看目錄

nodemon 命令還支持 --watch 用於觀看不同目錄的標誌。假設我們有一個目錄,app ,我們希望 Nodemon 監控,我們只需提供 --watch 之後的目錄 標誌:

$ nodemon --watch app

例如,如果我們有多個目錄,如下結構:

app
views
utils
public/
  index.html

我們可以添加 --watch 標記每個目錄以包含它們:

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

忽略文件和目錄

也可以告訴 Nodemon 避免監視某些文件和文件夾,如果您不希望 Nodemon 過早或過於頻繁地重新啟動文件,這很有用,特別是如果文件一直以編程方式更改,例如日誌文件。

我們可以用 --ignore 做到這一點 標誌:

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

延遲重啟

雖然延遲重啟並不太常見,但有時您要觀看的文件無法立即可用,或者一批文件正在連續更新。對於每次更改,都會發出重新啟動,使您的應用程序重新啟動多次。

免費電子書:Git Essentials

查看我們的 Git 學習實踐指南,其中包含最佳實踐、行業認可的標準以及隨附的備忘單。停止谷歌搜索 Git 命令並真正學習 它!

您可以通過設置 --delay 來延遲 Nodemon 對更改的文件做出反應 標誌,後跟以秒為單位的延遲:

$ nodemon --delay 5 app.js

在這裡,我們在 Nodemon 對更改做出反應之前添加了 5 秒延遲(等待時間)。在這 5 秒之間所做的任何更改都會重新啟動延遲計時器,並忽略之前所做的更改,僅對最新更改執行重新啟動。

也可以以毫秒為單位指定延遲:

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

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

結論

Nodemon 允許您在更改底層文件時自動重新啟動 Node 應用程序的過程。這本身不是問題,但在開發過程中多次重新啟動應用程序時可能會令人煩惱。

它監視源目錄的更改,並無縫重啟您的 Node 應用程序,並允許在此過程中進行自定義。


Tutorial JavaScript 教程
  1. 如何使用 react 和 firebase 從數組中刪除項目

  2. 使用 vue.js 進行可訪問路由

  3. 為什麼這個節流函數中的事件監聽器會這樣?

  4. 我做了一個新的標籤瀏覽器擴展/主題

  5. 使用 Lighthouse-CI 監控網站性能

  6. 如何為 HTML 中的文件輸入設置值?

  7. 更改多個元素的類的最快方法是什麼?

  1. 在 JavaScript 對像中將變量設置為鍵名

  2. 如何將 YYYY-MM-DD hh:mm:ss 格式的日期轉換為 UNIX 時間戳

  3. 使用 Strapis 自定義路由作為代理顯示外部用戶頭像

  4. Drum-Kit:使用 DOM 和 Javascript 的娛樂應用

  5. 使用 React Hooks 更新布爾狀態

  6. 如何解碼 URI

  7. 禁用對數據表中特定列的排序

  1. JavaScript 中可取消的異步函數

  2. Angular 和 RxJS:添加 REST API 後端

  3. 代碼和 Scrum 100 天的第 73 天:我的投資組合的項目頁面

  4. 開始使用書籍模板!