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 启动后:
- 执行
app.js - 监听当前目录及子目录的文件变化
- 文件改了 → 自动重启进程
- 控制台输出
[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:nodemon.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:package.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
| 维度 | nodemon |
node --watch |
|---|---|---|
| 内置 | ❌ 第三方 | ✅ 内置 |
| 配置灵活度 | 高(nodemon.json) |
低(仅 --watch-path) |
| 多目录监听 | ✅ | ❌(单目录) |
| 自定义扩展名 | ✅ | ❌(默认 js/json/mjs) |
| 调试集成 | --inspect 完整支持 |
需手动加 |
| 老项目兼容 | 通用 | Node 18+ |
::: tip
新项目(Node 18+)可以直接用 node --watch ,少装一个依赖;老项目 / 需要复杂配置仍用 nodemon。
:::
七、最佳实践
| 场景 | 推荐 |
|---|---|
| 开发期启动 | nodemon app.js 或 node --watch app.js |
| 调试 | nodemon --inspect app.js |
| 监听多目录 | nodemon.json 的 watch 数组 |
| 忽略日志 / node_modules | nodemon.json 的 ignore |
| 注入环境变量 | nodemon.json 的 env.NODE_ENV = 'development' |
八、小结
nodemon监听文件改动自动重启 Node 进程- 配置文件
nodemon.json比命令行参数更可维护 --inspect启动 Node Inspector,配合 Chrome DevTools 调试- Node 18+ 可用内置
node --watch替代,少装依赖 - 大项目用
nodemon.json配置监听目录和忽略规则