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

如何在Turborepo中让tsc自动转译工作区其他TypeScript包?

如何让TypeScript自动转译Monorepo中的工作区依赖包

针对你在Turborepo monorepo中遇到的主应用无法自动转译内部TypeScript包的问题,标准TypeScript本身没有直接对应Next.js transpilePackages的配置选项,但可以通过以下几种方案实现自动转译:

方案一:TypeScript Composite项目 + tsc-watch监听

  1. 配置依赖包的tsconfig.json
    在packages/tspackage/tsconfig.json中开启复合项目模式,确保编译输出和声明文件生成:
{
  "compilerOptions": {
    "target": "ESNext",
    "module": "CommonJS",
    "outDir": "./dist",
    "rootDir": "./src",
    "declaration": true,
    "composite": true
  },
  "include": ["src/**/*"]
}
  1. 主应用配置项目引用
    在apps/tsapp/tsconfig.json中添加对tspackage的引用,并配置路径映射指向源码:
{
  "compilerOptions": {
    "target": "ESNext",
    "module": "CommonJS",
    "outDir": "./dist",
    "rootDir": "./src",
    "baseUrl": ".",
    "paths": {
      "@myscope/tspackage": ["../../packages/tspackage/src"]
    }
  },
  "include": ["src/**/*"],
  "references": [{ "path": "../../packages/tspackage" }]
}
  1. 修改dev脚本
    在apps/tsapp/package.json中更新dev命令,使用--build参数让tsc-watch处理整个引用链:
{
  "scripts": {
    "dev": "tsc-watch --build --onSuccess \"node dist/index.js\""
  }
}

执行npm run dev后,tsc会自动先编译tspackage,且修改tspackage代码时会触发增量编译,无需手动重启。

方案二:ts-node + SWC实时转译

如果不想预编译依赖包,可借助ts-node和SWC实现实时转译:

  1. 安装依赖
npm install -D ts-node tsconfig-paths @swc/core @swc/register
  1. 配置路径映射
    在apps/tsapp/tsconfig.json中保留路径映射:
{
  "compilerOptions": {
    "paths": {
      "@myscope/tspackage": ["../../packages/tspackage/src"]
    }
  }
}
  1. 更新dev脚本
{
  "scripts": {
    "dev": "ts-node -r tsconfig-paths/register -r @swc/register src/index.ts"
  }
}

这样ts-node会通过SWC实时转译tspackage的源码,修改后立即生效,跳过预编译步骤。

方案三:Turborepo管道实现并行监听

结合Turborepo的管道能力,自动同步依赖包的编译状态:

  1. 配置turbo.json
    在仓库根目录的turbo.json中定义dev管道,让主应用的dev依赖于依赖包的dev命令:
{
  "$schema": "https://turbo.build/schema.json",
  "pipeline": {
    "dev": {
      "dependsOn": ["^dev"],
      "cache": false
    }
  }
}
  1. 给依赖包添加dev脚本
    在packages/tspackage/package.json中添加watch编译命令:
{
  "scripts": {
    "dev": "tsc-watch --outDir dist"
  }
}
  1. 主应用保持原dev脚本
    运行根目录的npm run dev后,Turborepo会自动启动tspackage的watch和tsapp的watch,依赖包代码修改时会自动重新编译,主应用也会随之更新。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.24 13:33:19