# 自动重启

我们在开发项目时,修改代码后需要手动重启项目,这样比较麻烦,我们希望修改代码后自动重启项目,这样我们就可以专注于开发,而不需要手动重启项目。下面介绍几种自动重启项目的方法。

# nodemon

nodemon (opens new window) 是一个用于 Node.js 开发的工具,它能够监视文件变化并自动重启 Node.js 应用程序,从而提升开发效率。nodemon 会监视项目中的文件(如 .js.json 等),当文件发生变化时,自动重启 Node.js 应用程序。

# 安装

npm install -g nodemon

# 启动

方法一:我们可以在 package.json 中添加启动命令, 然后执行 npm start 启动项目

"scripts": {
  "start": "nodemon ./src/app.js"
}

方法二:我们也可以直接执行 nodemon ./src/app.js 启动项目

nodemon ./src/app.js

# 配置

我们也可以在 nodemon.json 中配置启动参数

{
  "watch": ["src", "config"],  // 监视 src 和 config 目录下的文件
  "ext": "js,json,ts", // 监视 js、json 和 ts 文件
  "ignore": ["tests/*", "public/*", "node_modules"], // 忽略 tests、public 和 node_modules 目录下的文件
  "exec": "babel-node src/index.js",  // 执行 babel-node 启动项目
  "env": {
    "NODE_ENV": "development",  // 设置环境变量 
    "PORT": 3000  // 设置端口
  },
  "delay": 2,  // 延迟重启时间
  "verbose": true,  // 显示详细日志
  "restartable": "rs",  // 重启命令
  "execMap": {
    "py": "python"  // 执行 python 命令
  },  
  "stdin": false,  // 不使用标准输入
  "colours": true,  // 使用颜色
  "runOnChangeOnly": false,  // 只在文件变化时重启
  "signal": "SIGUSR2",  // 信号
  "timeout": 1000  // 超时时间
}

# supervisor

supervisor (opens new window) 是一个用于 Node.js 开发的工具,它能够监视文件变化并自动重启 Node.js 应用程序,从而提升开发效率。supervisor 会监视项目中的文件(如 .js.json 等),当文件发生变化时,自动重启 Node.js 应用程序。

# 安装

npm install -g supervisor

# 启动

方法一:我们可以在 package.json 中添加启动命令, 然后执行 npm start 启动项目

"scripts": {
  "start": "supervisor ./src/app.js"
}

方法二:我们也可以直接执行 supervisor ./src/app.js 启动项目

supervisor ./src/app.js

# 常用配置参数

参数 说明
-w 或 --watch 指定要监视的目录或文件,用逗号分隔。
-i 或 --ignore 指定要忽略的目录或文件,用逗号分隔。
-e 或 --extensions 指定要监视的文件扩展名,用逗号分隔。
-p 或 --poll-interval 设置轮询间隔时间(单位:毫秒)。
-n 或 --no-restart-on 指定某些事件不触发重启(如 exit)。
-x 或 --exec 指定要执行的命令,默认为 node。
-t 或 --timestamp 在日志中显示时间戳。
-q 或 --quiet 减少日志输出。
-k 或 --kill-timeout 设置进程终止的超时时间(单位:毫秒)。
--debug 启用调试模式。
--debug-brk 启用调试模式,并在第一行代码处暂停。
--harmony 启用 ES6 的 Harmony 特性。
--inspect 启用 Node.js 的调试模式。
--inspect-brk 启用 Node.js 的调试模式,并在第一行代码处暂停。

示例:

supervisor -w src,config app.js