在開發或調試Node.js應用程序的時候,當你修改js文件后,總是要按下CTRL+C終止程序,然后再重新啟動,即使是修改一點小小的參數,也 總是要不斷地重復這幾個很煩人的操作。這是因為Node.js 只有在第一次引用到某部份時才會去解析腳 本文件,以后都會直接訪問內存,避免重復載入。
Node.js的這種設計雖然有利於提高性能,卻不利於開發調試,因為我們在開發過程中總是希望修改后立即看到效果,而不是每次都要終止進程並重啟。
有沒有辦法做到當文件修改之后,Node.js自動重新啟動(或重新加載文件)以節省時間呢?一開始我是想到用 grunt的watch模塊來監控文件變化,但后來在網上一查,原來我們想到的,別人早已想到,並且已經做得很好。Node Supervisor正是這樣一個可以實現這種需求的Node.js模塊。
supervisor 可以幫助你實現這個功能,它會監視你對代碼的改動,並自動重啟Node.js。 根據Github上的說明,Node Supervisor原本是用於服務器上Node.js應用崩潰的時候,自己重新啟動。當然它也可以監控你的項目的js(或CoffeeScript)文件變化,進而重啟來方便我們調試應用程序。
安裝方法(以全局模塊安裝):
代碼如下:
npm install supervisor -g
如果你使用的是Linux 或Mac,直接鍵入上面的命令很可能會有權限錯誤。原因是npm 需要把supervisor 安裝到系統目錄,需要管理員授權,
可以使用 sudo npm install -g
supervisor 命令來安裝。
假設你的Node.js程序主入口是app.js,那么只需要執行以下命令,即可開始監控文件變化。
代碼如下:
supervisor app.js
Supervisor還支持多種參數,列舉如下:
代碼如下:
//要監控的文件夾或js文件,默認為'.' -w|--watch <watchItems> //要忽略監控的文件夾或js文件 -i|--ignore <ignoreItems> //監控文件變化的時間間隔(周期),默認為Node.js內置的時間 -p|--poll-interval <milliseconds> //要監控的文件擴展名,默認為'node|js' -e|--extensions <extensions> //要執行的主應用程序,默認為'node' -x|--exec <executable> //開啟debug模式(用--debug flag來啟動node) --debug //安靜模式,不顯示DEBUG信息 -q|--quiet
例子:
代碼如下:
supervisor myapp.js supervisor -w py_scripts -e 'py' -x python myapp.py supervisor -w lib, server.js, config.js, server.js