Node系列 · Express:nodemon

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: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.jsnode --watch app.js
调试 nodemon --inspect app.js
监听多目录 nodemon.jsonwatch 数组
忽略日志 / node_modules nodemon.jsonignore
注入环境变量 nodemon.jsonenv.NODE_ENV = 'development'

八、小结

  • nodemon 监听文件改动自动重启 Node 进程
  • 配置文件 nodemon.json 比命令行参数更可维护
  • --inspect 启动 Node Inspector,配合 Chrome DevTools 调试
  • Node 18+ 可用内置 node --watch 替代,少装依赖
  • 大项目用 nodemon.json 配置监听目录和忽略规则
相关推荐
半生过往1 小时前
Node.js 多版本管理完全指南
node.js
梦帮科技13 小时前
AI 音乐产品的发布工程:验证门、数据发布、回滚与生产运维纪律
数据结构·数据库·架构·node.js·音视频·动态规划·推荐算法
BreezeJiang1 天前
别把 WebSocket 当成一门新协议学:搞懂"借 HTTP 握手",双端 Demo 和跨域就都通了
websocket·node.js
65岁退休Coder1 天前
把 Agent 框架拆开:PI 开发生产级 Harness
后端·node.js·agent
65岁退休Coder2 天前
PI Agent 开发一个生产级 Harness
后端·node.js·agent
szephyr2 天前
WebSocket 实战:心跳、断线重连、鉴权,一次讲清
前端·websocket·node.js·长连接·实时通信
秋秋小事2 天前
node postgreSQL的select与include
node.js
ID34610744202 天前
【课程设计】基于Spring Boot+Vue的游戏账号租赁系统的设计与实现-计算机毕设 附源码50345
javascript·vue.js·spring boot·python·node.js·php·课程设计
柚yuzumi2 天前
彻底搞懂 JavaScript 类型转换:显式转换、隐式转换与 ToPrimitive
前端·javascript·node.js
cpolar技术支持2 天前
本地登录正常,公网却掉线?Express Session 经 cpolar HTTPS 访问的 Cookie 排障实战
node.js·express·cpolar·cookie·session