You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过Nodemon仅在subapp变更时触发指定构建脚本?

实现仅Subapp变更时先构建再重启的Nodemon配置

可以实现,具体操作如下:

1. 移除subapp中现有nodemon.json的restart事件配置

全局的restart事件会在任何重启触发时执行build,不符合仅subapp变更才执行的需求,先删除subapp的nodemon.json里的events配置。

2. 在mainapp目录下创建前置处理脚本

新建pre-restart.js文件(放在mainapp根目录),用来判断变更来源并执行对应操作:

const path = require('path');
const { execSync } = require('child_process');

// 获取Nodemon传递的变更文件列表
const changedFiles = process.env.NODEMON_FILES?.split(',') || [];

// 检查是否有变更文件来自subapp的src目录
const subappSrcPath = path.resolve(__dirname, '../subapp/src');
const isSubappChange = changedFiles.some(file => {
  return path.resolve(file).startsWith(subappSrcPath);
});

if (isSubappChange) {
  console.log('检测到subapp代码变更,执行构建命令...');
  // 切换到subapp目录执行build
  execSync('npm run build', { cwd: '../subapp', stdio: 'inherit' });
}

3. 修改mainapp的watch脚本命令

更新mainapp/package.json中的watch脚本,添加--event参数指定重启前执行上述脚本:

"scripts": {
  "watch": "nodemon --watch src/ app.js -e ts --watch '../subapp/src/' -e ts --event restart:./pre-restart.js"
}

原理说明

  • Nodemon在检测到文件变更触发重启前,会执行restart事件绑定的pre-restart.js脚本
  • 脚本通过NODEMON_FILES环境变量获取本次触发重启的所有变更文件路径
  • 判断这些路径是否属于subapp的src目录,若是则执行subapp的build命令
  • 只有当变更来自subapp时才会执行构建,mainapp自身变更时直接重启,不会触发build

内容的提问来源于stack exchange,提问作者asus

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.17 22:15:33