如何在Node.js原生插件源码变更时自动重建并重启应用?
用Nodemon实现Native Addon自动重建+Node应用重启
刚好我之前做Node.js Native Addon开发时也折腾过这个需求,用nodemon配合简单的脚本就能搞定,给你捋个清晰的实操方案:
1. 先装必要依赖
首先确保你本地有nodemon(负责监听文件变更)和node-gyp(负责构建Native Addon),直接通过dev依赖安装:
npm install nodemon node-gyp --save-dev
2. 配置监听与构建逻辑
有两种配置方式,选你顺手的来:
方式一:直接在package.json里写脚本
打开项目的package.json,在scripts字段里添加这几个命令:
"scripts": { "start": "node index.js", // 启动你的Node应用 "build": "node-gyp clean rebuild", // 干净重建Addon(加clean避免缓存问题) "dev": "nodemon --watch src/ --ext cc,h,cpp,binding.gyp --exec 'npm run build && npm start'" }
--watch src/:指定监听你的C++源码目录(如果你的源码在其他路径,比如cpp/,就改成对应路径)--ext cc,h,cpp,binding.gyp:告诉nodemon要监听这些类型的文件(包括头文件、源文件和Addon的配置文件)--exec:指定文件变更后要执行的命令——先重建Addon,再重启Node应用
方式二:用nodemon.json做更灵活的配置
如果你的监听规则比较复杂,可以在项目根目录新建nodemon.json文件,内容如下:
{ "watch": ["src/", "binding.gyp"], // 要监听的目录和文件 "ext": "cc,h,cpp,gyp", // 要监听的文件扩展名 "ignore": ["build/"], // 排除构建产物目录,避免触发无限重启 "exec": "npm run build && npm start" // 文件变更后执行的命令 }
然后在package.json的scripts里简化dev命令:
"scripts": { "start": "node index.js", "build": "node-gyp clean rebuild", "dev": "nodemon" }
3. 启动开发模式
一切配置好后,只需要在终端运行:
npm run dev
现在你修改src/里的C++源码、头文件,或者修改binding.gyp时,nodemon会自动触发Addon的重建,等构建完成后自动重启你的Node应用,完全不用手动操作~
小Tips
- 如果遇到构建缓存导致变更不生效的问题,一定要确保
build命令里加了clean,也就是node-gyp clean rebuild,每次构建前先清理旧产物 - 如果你的Addon构建产物不在默认的
build/目录,记得在nodemon.json的ignore里加上对应的路径,避免因为产物更新触发重复重启
内容的提问来源于stack exchange,提问作者Wyck
相关产品推荐
相关产品推荐

