返回笔记列表

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

相关推荐