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默认忽略,无需配置- 使用
.nodemonignore或ignore排除文件
要点总结
nodemon app.js启动并监控文件变化nodemon.json配置监控规则--watch指定监控目录,--ext指定文件类型--exec可执行其他命令如ts-node- 开发必备,生产禁用
📝 发现内容有误?点击此处直接编辑