Turborepo配置:如何让API应用监听shared-utils包变更?
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. 验证运行流程
- 在根目录执行
npm run dev,Turbo会同时启动shared-utils的watch构建和API的nodemon服务 - 修改
shared-utils下的源码,其dev任务会自动重新编译到dist目录 - nodemon检测到
shared-utils/dist的文件变化,会自动重启API服务,加载最新的工具包代码
额外注意事项
- 确保
shared-utils的tsconfig.json配置了正确的outDir为dist,保证编译产物正常生成 - 建议将API依赖的
shared-utils版本改为workspace协议,比如"shared-utils": "workspace:*",让依赖关系更明确
内容的提问来源于stack exchange,提问作者Paul Serre
相关产品推荐
相关产品推荐

