Node: Nodemon服務重啟工具的詳細使用


一、簡介

Nodemon是一個非常好用的工具,它可以幫助開發者實現服務的自動重啟。在服務端開發中,開發者經常會去修改文件然后進行調試,每次修改完如果需要人為去重新啟動服務的話,非常浪費精力和時間。Nodemon這個工具正好提供了重啟服務的功能,非常方便。

 

二、項目

還是采用上篇文章創建的項目為例,如下:

 

三、修改

1、添加腳本,修改啟動方式,采用npm啟動

//"start": 這個是啟動的字段,可以自己定義,在終端運行時對應即可
//"node src/app.js": 這個是node運行的文件
{
  "name": "node-demo",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "scripts": {
    "start":"node src/app.js",
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "keywords": [],
  "author": "",
  "license": "ISC"
}

2、使用npm啟動服務

//啟動服務
npm start

//在終端啟動后的結果輸出如下
> node-demo@1.0.0 start /Users/xiayuanquan/Desktop/開發案例/NodeApp/node-demo
> node src/app.js

服務器啟動

 

四、配置

使用上面的npm現在確實可以啟動服務了。但是,並不能幫助開發者每次在重新修改完服務端文件如app.js文件后重新啟動服務。如果不信,可以試着修改完app.js后再次刷新web,發現web結果不會發生變化。要想使用這個Nodemon的服務重啟功能,需要先安裝Nodemon,然后接着配置項目的package.json文件。添加一個重啟的腳本即可,如下所示:

1、安裝Nodemon

// -D: dev環境
npm install nodemon -D

//安裝結果如下:
+ nodemon@2.0.2
added 106 packages from 53 contributors in 6.892s 

2、修改package.json的啟動命令

//"start": 新的啟動腳本
//"start:node": 原啟動腳本
{
  "name": "node-demo",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "scripts": {
    "start":"nodemon src/app.js",
    "start:node":"node src/app.js",
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "keywords": [],
  "author": "",
  "license": "ISC"
}

2、使用npm啟動服務

 xiayuanquan@XYQ  ~/Desktop/開發案例/NodeApp/node-demo  npm start

> node-demo@1.0.0 start /Users/xiayuanquan/Desktop/開發案例/NodeApp/node-demo
> nodemon src/app.js

[nodemon] 2.0.2                    //nodemon的版本
[nodemon] to restart at any time, enter `rs`    //輸入rs可以手動重啟,如下所示
[nodemon] watching dir(s): *.*           //監測的文件,"."表示所有的文件,開發者可以自定義設置  
[nodemon] watching extensions: js,mjs,json
[nodemon] starting `node src/app.js`
服務器啟動
rs
[nodemon] starting `node src/app.js`
服務器啟動

3、現在手動隨意修改文件,可以發現服務都會立即重啟,如下所示:

4、現在修改app.js中的控制台輸出內容后,在web刷新發生了變化,如下:

//web 服務
//ajax --->api --->web server(node.js)

//導入http模塊
const http = require('http');

//創建服務器實例
//req:請求內容
//res:響應內容
const server = http.createServer((req, res)=>{
    res.end('hello world, xiayuanquan');
});

//服務器設置監聽
//3000:監聽端口號
//127.0.0.1:監聽主機
//()=>{}:監聽回調
server.listen(3000,'127.0.0.1', ()=>{
    console.log('服務器啟動');
});

5、現在的確實現了服務的重啟功能。但是默認配置中,觀察的文件是所有文件,這個對程序運行的性能是有影響的。對於一些無關緊要的文件的修改,不需要服務重啟。我們可以單獨給Nodemon創建一個配置文件,設置需要觀察的文件。如下所示:

//監聽的文件是src文件夾下任何子集下的任何文件
//也可以修改為監聽js文件: "./src/**/*.js"

6、配置完后,在終端手動重啟服務后。開發者再次對非觀測的文件進行修改時,服務就不會重啟了。只有對觀測的文件做修改,服務才會傳重啟。

7、在啟動服務時,可以打開debug模式,瀏覽全部的日志信息,如下所示: 

//DEBUG=* : 打開了debug模式
{
  "name": "node-demo",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "scripts": {
    "start": "DEBUG=* nodemon src/app.js",
    "start:node": "node src/app.js",
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "keywords": [],
  "author": "",
  "license": "ISC",
  "devDependencies": {
    "nodemon": "^2.0.2"
  }
}

啟動后終端數據如下:

xiayuanquan@XYQ  ~/Desktop/開發案例/NodeApp/node-demo  npm start

> node-demo@1.0.0 start /Users/xiayuanquan/Desktop/開發案例/NodeApp/node-demo
> DEBUG=* nodemon src/app.js

  nodemon bus new listener: reset (0) +0ms
  nodemon bus new listener: reset (0) +2ms
  nodemon bus new listener: quit (0) +9ms
  nodemon bus new listener: quit (0) +0ms
  nodemon bus new listener: restart (0) +0ms
  nodemon bus new listener: restart (0) +0ms
  nodemon bus new listener: boot (0) +0ms
  nodemon bus new listener: boot (0) +0ms
  nodemon bus new listener: reset (2) +3ms
  nodemon bus emit: boot +2ms
  nodemon bus emit: reset +1ms
  nodemon resetting watchers +0ms
  nodemon reset +0ms
  nodemon config: dirs [ '/Users/xiayuanquan/Desktop/開發案例/NodeApp/node-demo/src' ] +0ms
[nodemon] 2.0.2
[nodemon] to restart at any time, enter `rs`
  nodemon bus new listener: error (0) +62ms
  nodemon bus new listener: error (0) +0ms
[nodemon] watching dir(s): src/**/*.*
[nodemon] watching extensions: js,mjs,json
[nodemon] starting `node src/app.js`
  nodemon:run fork sh -c node src/app.js +0ms
  nodemon bus new listener: exit (0) +9ms
  nodemon bus new listener: exit (0) +0ms
  nodemon:run start watch on: ./src/**/*.* +1ms
  nodemon start watch on: /Users/xiayuanquan/Desktop/開發案例/NodeApp/node-demo/src +70ms
  nodemon ignored [ '**/.git/**',
  '**/.nyc_output/**',
  '**/.sass-cache/**',
  '**/bower_components/**',
  '**/coverage/**',
  '**/node_modules/**',
  re: /.*.*\/\.git\/.*.*|.*.*\/\.nyc_output\/.*.*|.*.*\/\.sass\-cache\/.*.*|.*.*\/bower_components\/.*.*|.*.*\/coverage\/.*.*|.*.*\/node_modules\/.*.*/ ] +1ms
  nodemon:watch chokidar watching: /Users/xiayuanquan/Desktop/開發案例/NodeApp/node-demo/src/app.js +0ms
  nodemon watch is complete +25ms
服務器啟動

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM