← [ BACK_TO_NOTES ]

TypeScript 中的 rootDirs

说明 rootDirs 如何把多个目录视作一个虚拟根来解析相对导入,以及它为什么常用于生成代码目录和静态资源声明目录。

#dev #typescript #concept #growing

[!info] related notes

TypeScript 中的 rootDirs

一句话定义

rootDirs 用来告诉 TypeScript:多个目录应被当成一个“虚拟根目录”来解析相对导入。

核心机制 / 工作原理

官方文档的定义很直接:

  • many “virtual” directories acting as a single root

它的核心效果是:

  • TypeScript 会把这些目录想象成已经合并到一起
  • 然后按这个假设去解析相对路径导入

例如:

{
  "compilerOptions": {
    "rootDirs": ["src/views", "generated/templates/views"]
  }
}

这能让两边的文件像在同一个目录树里一样互相做相对导入解析。

最小例子 / 最小场景

它最典型的两类用途是:

  • 源码目录和生成代码目录合并理解
  • 源码目录和生成的 .d.ts 目录合并理解

官方文档还特别举了一个很实用的模式:

  • src/ 里是真实源码
  • generated/ 里是为非代码文件生成的声明文件

这样像 import "./main.css" 这类导入,就可以通过对应的 main.css.d.ts 被理解。

边界与易混淆点

它不影响 emit

官方文档明确说:

  • it only emulates the assumption

也就是它只影响 TypeScript 如何理解这些路径,不改变 JavaScript 输出目录结构。

它不等于 rootDir

rootDir 更偏:

  • 输出目录从哪个共同根开始截取

而 rootDirs 更偏:

  • 多个目录在解析时被视作一个虚拟根

它也不等于 alias

rootDirs 讨论的是相对导入在多个目录间的虚拟合并关系,不是 @/foo 这类别名映射。

参考信息

创建于 2026/5/15 更新于 2026/7/15
Digital Biome
Access

键盘导航

j / k / ↑ / ↓
选择对象
Enter / o
打开选择
/ 或 Ctrl+K
全站搜索
i / f / 1–4
筛选当前列表
g → h / l / p / t / a
首页 / 笔记 / 项目 / 工具 / About
r → 1–9
打开所选对象的关联
u
返回上一页
Esc
关闭浮层 / 取消命令;输入框内清空文本