TypeScript 中的 composite

说明 composite 为什么是 project references 的基础,以及它会给 rootDir、include 和 declaration 带来哪些约束。

#tech / dev #resource / typescript #type / concept #status / growing

[!info] related notes

TypeScript 中的 composite

一句话定义

composite 会把当前项目变成“可被其他 TypeScript 项目引用的构建单元”。

核心机制 / 工作原理

当开启 composite 时,TypeScript 会进入一种更严格、也更适合项目级增量构建的模式。

官方文档强调,它会带来几件事:

  • 如果没显式设置 rootDir,默认值变成 tsconfig 所在目录
  • 所有实现文件都必须被 includefiles 覆盖
  • declaration 默认为 true

最小例子 / 最小场景

{
  "compilerOptions": {
    "composite": true,
    "declaration": true
  }
}

常见用途

  • project references
  • monorepo 中的库包
  • 需要增量 build 与跨项目类型消费的仓库

边界与易混淆点

composite 不只是“更快”

它的意义不只是性能,还包括:

  • 输出边界更清晰
  • 引用关系更显式
  • build mode 更可控

composite 会让一些以前“能混过去”的配置暴露问题

比如:

  • 文件没被 include 到
  • rootDir 不明确
  • 声明文件策略没配好

参考信息

创建于 2026/5/15 更新于 2026/5/27