我們在開發Node服務時每當更改檔案內容時都需要需重啟一下服務功能才能生效,如果每次程式碼修改都要重複這樣的操作勢必會影響開發效率。所以我們希望每當檔案被修改之後服務可以自行重啟,不需要我們再去手動執行(把更多的精力都放到業務邏輯實現上)。而Nodemon就可以幫助我們實現這一功能,它可以監控你的node.js原始碼改變並自動重啟你的伺服器。
Nodemon安裝
在nodejs應用程式中使用Nodemon包非常簡單,我們只要透過npm就可以快速地安裝該工具包。為了可以直接使用nodemon來代替node啟動應用我們採用全域性安裝,安裝完 nodemon 後就可以用 nodemon 來代替 node 來啟動應用。
npm install -g nodemon //如果想用nodemon來代替node啟動應用可以全域性安裝+ [email protected] 117 packages from 53 contributors in 17.558s11 packages are looking for funding run `npm fund` for details
Nodemon使用Nodemon使用非常的簡單,直接nodemon + app(JavaScript檔案)就可以啟動了。你也可以在啟動的時候新增引數來指定如何啟動,比如以debug模式執行:node bin/app.js --debug。更多功能我們可以透過命令:nodemon -h 或者 nodemon --help來檢視幫助文件,官網給出的幾個nodemon例子。當我們透過nodemon啟動服務後,它會監測專案中的所有檔案。一旦發現檔案有改動,nodemon會自動重啟node服務。
# nodemon -h 或者 nodemon --helpOptions: --config file ............ alternate nodemon.json config file to use -e, --ext ................ extensions to look for, ie. js,pug,hbs. -x, --exec app ........... execute script with "app", ie. -x "python -v". -w, --watch path ......... watch directory "path" or files. use once for each directory or file to watch. -i, --ignore ............. ignore specific files or directories. -V, --verbose ............ show detail on what is causing restarts. -- <your args> ........... to tell nodemon stop slurping arguments.Examples: $ nodemon server.js $ nodemon -w ../foo server.js apparg1 apparg2 $ nodemon --exec python app.py $ nodemon --exec "make build" -e "styl hbs" $ nodemon app.js -- --config # pass config to app.js
Nodemon配置Nodemon除了可以透過命令列使用,也可以透過配置檔案來使用。該檔案一般命名為nodemon.json,放在當前專案的根目錄中。在該檔案中我們可以來配置nodemon屬性,然後使用該--config <nodemon.json>選項指定本地配置檔案。
{ "restartable":"rs", //重啟的命令,預設是rs,可以自定義 "ignore":[""], //忽略的檔案,檔案路徑相對於nodemon.json所在位置 "verbose": true, //輸出詳細啟動與重啟資訊,false則不輸出執行資訊 "execMap":{ //執行服務的字尾名和對應的執行命令 "js":"node", //nodemon代替node執行js字尾檔案 }, "events":{ //nodemon執行到某些狀態時的觸發事件 "start":"gulp", //子程序(即監控的應用)啟動 "crash":"", //子程序崩潰,不會觸發 exit "exit":"", //子程序完全退出,不是非正常的崩潰 "restart":"gulp", //子程序重啟 }, "ext": "js json", //監控指定字尾名的檔案,用空格間隔 "watch":[ //監控的資料夾路徑或者檔案路徑 "./src/*" //檔案路徑相對於nodemon.json所在位置 ], "env":{ //node執行環境 "NODE_ENV":"env", //env指開發環境; 執行環境 development; production 是生產環境 "PORT":"8000" //啟動埠號 }, "legacy-watch":false //開啟Chokidar監控系統,失敗則使用輪詢模式(true)。}
package.json設定如果你不想配置nodemon.json檔案也可以直接嵌入package.json檔案中,每個專案的根目錄下面都有一個package.json檔案。該檔案定義了專案所需要的各種模組以及專案的配置資訊,也指定了專案所需的執行條件和開發環境。package.json檔案是一個JSON物件,每個成員對應專案的一項設定。package.json詳細配置可以參考文章:Node實戰005:JavaScript包管理工具NPM詳解,下面是nodemon官方提供的package.json設定示例。
{ "name": "nodemon", "homepage": "http://nodemon.io", "...": "... other standard package.json values", "nodemonConfig": { "ignore": ["test/*", "docs/*"], "delay": "2500" }}
總結:
如果你在package.json中設定nodemon的話就不能再配置nodemon.json檔案,否則package.json中的配置會被忽略。最簡單的方法配置package.js 檔案中的 scripts.start選項,指定 "start": "nodemon ./bin/app.js"就可以用npm run start 來執行 nodemon ./bin/app.js。