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.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 配置监听目录和忽略规则
相关推荐
SomeOtherTime25 分钟前
node.js基础(AI回答)
node.js
雨季mo浅忆20 小时前
记录Node.js安全漏洞及其内置Brotli解码器问题
node.js·安全性测试
tommyjiatong20 小时前
资安底座连环雷:从 PHP2Shell 到 Node2Shell
node.js·php
SEO_juper1 天前
Bash 交叉验证 robots.txt 和 sitemap:两个文件自相矛盾,页面永远收录不了
开发语言·python·node.js·json·bash
SEO_juper1 天前
Go 站点地图生成器:从首页爬全站,一键生成 sitemap.xml
xml·开发语言·人工智能·golang·node.js·seo·外贸独立站
Moshow郑锴2 天前
Ansible 批量部署 Node.js 服务:ZIP 直解与共享目录分发两种方案对比
node.js·ansible
少年的范儿2 天前
Windows 安装 Node.js 教程:nvm 版本管理 + pnpm 安装配置
windows·npm·node.js
peach2 天前
同样是装依赖,为什么 npm 长成 node_modules,Maven 长成 .m2
npm·node.js·maven
FungLeo2 天前
成为全栈·Go 后端篇·重写之前先锁基线:契约、Node 版本与行为清单
golang·node.js·go·openapi·契约测试·成为全栈
FungLeo3 天前
成为全栈·Go 后端篇·契约一致性与差分测试:两套实现如何互相校验
golang·node.js·go·合约测试·差分测试·成为全栈·api兼容