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

如何配置node-dev使其每次重启时自动执行指定npm任务?

实现node-dev重启时自动执行TSOA生成任务

当然可以搞定这个需求!我之前在TSOA+Express的项目里也遇到过同样的痛点,下面给你两个实用的方案,你可以根据自己的项目情况选:

方案一:自定义启动脚本(推荐,最可靠)

这个方法的核心是让node-dev每次重启时先执行TSOA生成命令,再启动你的应用。步骤很简单:

  1. 在项目根目录创建一个start.js文件,内容如下:
const { execSync } = require('child_process');

// 先执行你的TSOA生成命令,根据你的实际配置调整
try {
  console.log('🔄 正在生成TSOA路由和Swagger文档...');
  execSync('npm run tsoa:generate', { stdio: 'inherit' });
} catch (error) {
  console.error('❌ TSOA生成失败:', error.message);
  process.exit(1); // 生成失败就终止启动,避免用旧路由运行
}

// 启动你的Express应用,替换成你实际的入口文件路径
require('./src/server');
  1. 修改package.json里的脚本配置:
{
  "scripts": {
    "tsoa:generate": "tsoa spec && tsoa routes", // 这里是你原本手动执行的TSOA命令
    "dev": "node-dev start.js"
  }
}

现在运行npm run dev,每次node-dev因为文件变化重启时,都会先自动执行TSOA生成任务,再启动应用。完美解决手动执行的问题!

方案二:用文件监听工具并行执行

如果你不想写JS脚本,可以用监听工具来自动触发TSOA生成,同时启动node-dev:

  1. 先安装需要的依赖:
npm install --save-dev npm-run-all onchange
  1. 修改package.json的脚本:
{
  "scripts": {
    "tsoa:generate": "tsoa spec && tsoa routes",
    "dev:watch-tsoa": "onchange 'src/**/*.ts' -- npm run tsoa:generate", // 监听TS源码文件变化
    "dev:start": "node-dev src/server.js",
    "dev": "npm-run-all -p dev:watch-tsoa dev:start" // 并行运行两个任务
  }
}

这个方案会同时做两件事:一是监听你的TS源码文件变化,一旦有修改就自动执行TSOA生成;二是启动node-dev运行你的应用。当TSOA生成的路由文件更新后,node-dev会检测到变化并重启应用。

一些注意事项

  • 确保TSOA生成的路由文件在node-dev的监听范围内,默认情况下node-dev会监听所有文件,但如果你有特殊的忽略配置,记得把生成文件排除在外。
  • 如果你的TSOA命令需要特定的环境变量,可以在execSync或者脚本里加上对应的变量配置。
  • 方案一的好处是不管node-dev因为什么原因重启(比如任何文件变化),都会先执行TSOA生成;方案二更适合只在源码变化时才触发生成的场景。

内容的提问来源于stack exchange,提问作者Eik W.

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 03:35:40