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 配置监听目录和忽略规则
相关推荐
__zRainy__1 小时前
Node系列 · Express:中间件
中间件·node.js·express
2601_962122972 小时前
Node.js的解释
node.js
屋昂仼2 小时前
NestJS 从入门到企业级实战(一):环境搭建与项目结构全解析
node.js
coderCN17 小时前
Nodejs 响应头和请求头
后端·node.js
__zRainy__18 小时前
Node系列 · ORM:log4js 日志记录
node.js·log4j
秋秋小事1 天前
node 导入与导出
node.js
秋秋小事1 天前
node event模块
node.js
晴天161 天前
Node.js 中 `npm install` 命令分析-Day30
前端·npm·node.js
晴天161 天前
VS Code `launch.json` 指南(Node.js版)-Day30
node.js·json