Typescript的outDir和rootDir配置的含义和关系
这两个配置控制输入文件和输出文件的目录结构关系。
outDir 指定编译后的 JavaScript 文件输出目录。
rootDir 指定 TypeScript 编译的源代码根目录,用于控制输出目录结构的计算基准。
路径相对 tsconfig.json 所在目录;可以用 “./src” 或 “src”,效果一样
在 TypeScript 6 里,只要配置了 outDir,就必须手动指定 rootDir,不能再让编译器自动推断。
所有源码都在 src/ 下
rootDir 写 “./src” 最合适:
{
"compilerOptions": {
"rootDir": "./src",
"outDir": "./dist",
// ... 其他配置
},
"include": ["src/**/*"]
}
源码分散在多个目录
myts/
src/
index.ts
lib/
helper.ts
如果 include 同时包含 src 和 lib,它们的公共父目录是项目根目录,这时应写:
"rootDir": "."
或者:
"rootDir": "./"
而不是 “./src”。
源码直接在根目录
myts/
index.ts
utils/
helper.ts
应写:
"rootDir": "."
只想编译部分目录
myts/
src/
app/
index.ts
shared/
utils.ts
如果 include 是 “src/app/**/*”,那 rootDir 可以是:
"rootDir": "./src/app"
输出就会直接进 dist/,不会带 app/ 这一层。
注意
所有源码都在 src/ 下,但是 rootDir = “./” 写成了根目录:
src/
├── index.ts
└── utils/
└── helper.ts
→ 输出到 dist/
dist/
└── src/ ← 注意保留了 src 层级
├── index.js
└── utils/
└── helper.js
一句话总结
- 所有源码都在 src/ :“./src”
- 源码在多个平级目录:写它们的共同父目录
- 源码在项目根目录:“.”
ts