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 通常只剩下配置层面的存在感。
参考信息
- TSConfig
outDir: https://www.typescriptlang.org/tsconfig/#outDir