Skip to content

Node系列 · Express:nodemon

开发期每次改完代码都要手动重启 Node 太麻烦——nodemon 监听文件改动自动重启,让开发效率提升一个档次。

一、安装与基础使用

bash
npm install -g nodemon      # 全局安装
# 或作为开发依赖
npm install -D nodemon

1.1 最简使用

bash
# 替代 node 命令
nodemon app.js

# 指定端口
nodemon app.js --port 4000

nodemon 启动后:

  1. 执行 app.js
  2. 监听当前目录及子目录的文件变化
  3. 文件改了 → 自动重启进程
  4. 控制台输出 [nodemon] restarting due to changes...

1.2 监听特定文件

bash
nodemon --watch src --watch config app.js

只监听 src/config/ 目录的变化。

1.3 忽略特定目录

bash
nodemon --ignore node_modules --ignore '*.test.js' app.js

node_modules 默认就忽略,但日志、构建产物目录需要显式排除。

二、配置 nodemon.json

把配置写到 nodemon.json 比命令行更可维护:

json
{
  "watch": ["src", "config"],
  "ignore": ["src/**/*.test.js", "logs"],
  "ext": "js,json,env",
  "env": {
    "NODE_ENV": "development"
  },
  "exec": "node --inspect app.js"
}
配置项含义
watch监听哪些目录
ignore忽略哪些文件
ext触发重启的扩展名
env注入环境变量
exec实际执行的命令

三、package.json 集成

json
{
  "scripts": {
    "start": "node app.js",
    "dev": "nodemon app.js",
    "debug": "nodemon --inspect app.js"
  }
}
bash
npm run dev      # 启动 nodemon
npm run debug    # 启动 nodemon + 调试模式

四、调试模式(--inspect

配合 Node Inspector / Chrome DevTools 调试:

bash
nodemon --inspect app.js
text
[nodemon] starting `node --inspect app.js`
Debugger listening on ws://127.0.0.1:9229/...

打开 Chrome DevTools → chrome://inspect,即可在浏览器里打断点、看变量。

五、--inspect vs --inspect-brk

bash
# --inspect:启动后立即继续执行,断点命中时才停
nodemon --inspect app.js

# --inspect-brk:启动后第一行就暂停,等调试器连上
nodemon --inspect-brk app.js

--inspect-brk 适合"代码启动早期就要打断点"的情况。

六、与 Node 内置 --watch 对比

Node 18+ 内置 --watch 也能监听文件变化:

bash
node --watch app.js
维度nodemonnode --watch
内置❌ 第三方✅ 内置
配置灵活度高(nodemon.json低(仅 --watch-path
多目录监听❌(单目录)
自定义扩展名❌(默认 js/json/mjs)
调试集成--inspect 完整支持需手动加
老项目兼容通用Node 18+

TIP

新项目(Node 18+)可以直接用 node --watch,少装一个依赖;老项目 / 需要复杂配置仍用 nodemon。

七、最佳实践

场景推荐
开发期启动nodemon app.jsnode --watch app.js
调试nodemon --inspect app.js
监听多目录nodemon.jsonwatch 数组
忽略日志 / node_modulesnodemon.jsonignore
注入环境变量nodemon.jsonenv.NODE_ENV = 'development'

八、小结

  • nodemon 监听文件改动自动重启 Node 进程
  • 配置文件 nodemon.json 比命令行参数更可维护
  • --inspect 启动 Node Inspector,配合 Chrome DevTools 调试
  • Node 18+ 可用内置 node --watch 替代,少装依赖
  • 大项目用 nodemon.json 配置监听目录和忽略规则