TypeScript 中的 outDir

说明 outDir 如何控制 TypeScript 编译产物的输出目录,以及它和 rootDir、declaration、noEmit 的关系。

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

[!info] related notes

TypeScript 中的 outDir

一句话定义

outDir 用来指定 TypeScript 编译产物应该输出到哪个目录。

核心机制 / 工作原理

如果设置了 outDir,TypeScript 会把:

  • .js
  • .d.ts
  • .js.map
  • .d.ts.map

等输出文件放进这个目录,并保留原始目录结构。

最小例子 / 最小场景

{
  "compilerOptions": {
    "rootDir": "./src",
    "outDir": "./dist"
  }
}

常见结果:

src/index.ts -> dist/index.js
src/api/user.ts -> dist/api/user.js

常见用途

  • 应用项目:把构建产物集中到 dist
  • library:把 .js.d.ts 一起输出到发布目录
  • monorepo:给每个包各自的 dist 留清晰边界

边界与易混淆点

outDir 不会改变 import 路径的语义

它控制的是 emit 产物落到哪里,而不是模块解析策略本身。

outDir 常和 rootDir 一起看

如果 outDir 正确但输出结构奇怪,通常先检查:

  • rootDir
  • include / exclude
  • 是否把别的源码也纳入了当前 program

noEmit 会让 outDir 失去实际作用

如果项目设置了 noEmit: true,TypeScript 不再输出文件,这时 outDir 通常只剩下配置层面的存在感。

参考信息

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