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

Turborepo配置:如何让API应用监听shared-utils包变更?

解决Monorepo中修改shared-utils后API不自动重建的问题

1. 完善turbo.json配置

Turbo需要明确任务的依赖关系、输出目录和监听规则,才能在依赖包更新时触发关联任务的重启。创建或修改根目录下的turbo.json:

{
  "$schema": "https://turbo.build/schema.json",
  "pipeline": {
    "dev": {
      "dependsOn": ["^dev"],
      "cache": false,
      "persistent": true,
      "outputs": []
    },
    "build": {
      "dependsOn": ["^build"],
      "outputs": ["dist/**"]
    }
  }
}
  • dependsOn: ["^dev"]:让每个包的dev任务等待其依赖包的dev任务启动完成
  • persistent: true:标记dev任务为持续运行的watch模式
  • cache: false:dev模式下禁用缓存,确保实时获取最新代码
  • build任务的outputs指定dist/**,让Turbo能追踪shared-utils的构建产物变化

2. 调整API的nodemon配置,监听依赖包产物

当前API的dev脚本仅监听自身文件,需要让它同时监听shared-utils的dist目录。在apps/api目录下创建nodemon.json:

{
  "watch": ["index.ts", "../../packages/shared-utils/dist"],
  "ext": "ts,js,d.ts",
  "exec": "npx ts-node index.ts"
}

然后修改apps/api/package.json的dev脚本,改用配置文件启动:

"scripts": {
  "dev": "nodemon",
  "build": "tsc",
  "lint": "eslint"
}

3. 配置根package.json的dev脚本

根目录的package.json需要通过Turbo启动所有包的dev任务:

"scripts": {
  "dev": "turbo run dev"
}

4. 验证运行流程

  1. 在根目录执行npm run dev,Turbo会同时启动shared-utils的watch构建和API的nodemon服务
  2. 修改shared-utils下的源码,其dev任务会自动重新编译到dist目录
  3. nodemon检测到shared-utils/dist的文件变化,会自动重启API服务,加载最新的工具包代码

额外注意事项

  • 确保shared-utils的tsconfig.json配置了正确的outDir为dist,保证编译产物正常生成
  • 建议将API依赖的shared-utils版本改为workspace协议,比如"shared-utils": "workspace:*",让依赖关系更明确

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.02 10:10:31