zoukankan      html  css  js  c++  java
  • 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
    服务器启动
  • 相关阅读:
    需求的有序化和方案的系统化
    产品 增长 口碑传播
    私域流量的价值 大悦城微信营销:14万微信会员哪来的
    产品创新阶段关口细则
    业务关键数据指标
    TOB 增长
    医美品零售门店分析
    数据赋能饮品轻食
    [已读]你不知道的JavaScript(上卷)
    [已读]移动web手册
  • 原文地址:https://www.cnblogs.com/XYQ-208910/p/12113521.html
Copyright © 2011-2022 走看看