全部学科
Python全栈
python
NodeJS全栈
nodejs
小程序首页
📅 2026-05-15 5 分钟 ✍️ juanwangdev

Node.js Nodemon 自动重启

Nodemon 监控文件变化并自动重启 Node.js 应用,无需手动重启。

安装

全局安装

Bash
npm install -g nodemon

项目安装

Bash
npm install --save-dev nodemon

基本使用

命令行启动

Bash
# 启动应用
nodemon app.js

# 指定入口文件
nodemon server.js

# 使用默认入口
nodemon

package.json 脚本

JSON
{
  "scripts": {
    "dev": "nodemon app.js",
    "start": "node app.js"
  }
}
Bash
npm run dev

配置文件

nodemon.json

JSON
{
  "watch": ["src"],
  "ext": "js,json",
  "ignore": ["src/*.test.js", "node_modules"],
  "exec": "node --inspect app.js",
  "env": {
    "NODE_ENV": "development",
    "PORT": 3000
  },
  "delay": 1000,
  "verbose": true
}

配置项说明

配置项说明默认值
watch监控目录.
ext监控文件扩展名js,mjs,cjs,json
ignore忽略文件/目录node_modules
exec执行命令node
delay重启延迟(ms)0
verbose详细日志false
env环境变量-

命令行选项

常用选项

Bash
# 监控指定目录
nodemon --watch src app.js

# 监控多种扩展名
nodemon --ext js,json,ts app.js

# 忽略文件
nodemon --ignore src/*.test.js app.js

# 执行其他命令
nodemon --exec "npm start"

# 延迟重启
nodemon --delay 2 app.js

# 调试模式
nodemon --inspect app.js

# 传递参数给应用
nodemon app.js --port 3000 --host localhost

完整示例

Bash
nodemon --watch src --ext js,ts --ignore src/*.test.ts --exec ts-node src/index.ts

与 TypeScript 配合

使用 ts-node

Bash
npm install --save-dev ts-node typescript nodemon
JSON
// nodemon.json
{
  "watch": ["src"],
  "ext": "ts",
  "ignore": ["src/**/*.test.ts"],
  "exec": "ts-node src/index.ts"
}

使用配置

JSON
// package.json
{
  "scripts": {
    "dev": "nodemon",
    "build": "tsc",
    "start": "node dist/index.js"
  }
}

与 Express 配合

JavaScript
// app.js
const express = require('express');
const app = express();

app.get('/', (req, res) => {
  res.send('Hello World');
});

const PORT = process.env.PORT || 3000;
app.listen(PORT, () => {
  console.log(`Server running on port ${PORT}`);
});
Bash
nodemon app.js

手动控制

运行时命令

操作说明
rs + 回车手动重启
Ctrl + C停止

高级用法

配合调试器

Bash
# 启用 inspect
nodemon --inspect app.js

# 启动时暂停
nodemon --inspect-brk app.js

事件钩子

JavaScript
// nodemon.json
{
  "events": {
    "start": "echo '应用启动'",
    "restart": "echo '应用重启'",
    "crash": "echo '应用崩溃'"
  }
}

信号处理

JavaScript
// 优雅关闭
process.on('SIGTERM', () => {
  console.log('收到 SIGTERM');
  server.close(() => {
    console.log('服务器关闭');
    process.exit(0);
  });
});

注意事项

  • 生产环境不使用 nodemon,直接用 node
  • 大型项目设置 delay 避免频繁重启
  • node_modules 默认忽略,无需配置
  • 使用 .nodemonignoreignore 排除文件

要点总结

  • nodemon app.js 启动并监控文件变化
  • nodemon.json 配置监控规则
  • --watch 指定监控目录,--ext 指定文件类型
  • --exec 可执行其他命令如 ts-node
  • 开发必备,生产禁用

📝 发现内容有误?点击此处直接编辑

← 上一篇 Node.js 调试基础
下一篇 → 使用 Chrome DevTools 调试 Node.js
想查看更多题目和详细解析?
小程序提供完整的题库、模拟考试和详细解析
马上就来

长按或扫描二维码,立即体验

扫码体验小程序
马上就来
使用微信扫描二维码
立即体验完整题库