TypeScript 中的 baseUrl
说明 baseUrl 的历史用途、它如何影响裸模块解析,以及为什么现代项目通常应减少对它的依赖。
#tech / dev
#resource / typescript
#type / concept
#status / growing
[!info] related notes
- 所属 MOC: TypeScript MOC
- 配置入口: tsconfig 使用详解
- 并列概念: TypeScript 中的 paths
- 关系笔记: TypeScript 中的 baseUrl 与 paths
TypeScript 中的 baseUrl
一句话定义
baseUrl 会给裸模块导入提供一个额外查找根目录。
核心机制 / 工作原理
如果配置:
{
"compilerOptions": {
"baseUrl": "./src"
}
}
那么:
import { foo } from "utils/foo";
会尝试按 src/utils/foo 继续解析。
最小例子 / 最小场景
baseUrl 最常见的旧用途是:
- 让项目内部能写裸路径导入
- 作为
paths值的公共前缀
边界与易混淆点
baseUrl 不只是“给 alias 提供前缀”
它会真实参与模块解析优先级。
baseUrl 已在现代 TypeScript 里进入弃用路径
官方文档说明:
- 它最初主要为 AMD loader 场景设计
- 从 TypeScript 4.1 起,
paths已不再依赖baseUrl - 到 TypeScript 6.0,它已被标记为 deprecated
ignoreDeprecations 只是静默,不是迁移
如果只是压掉提示,可以设置 ignoreDeprecations: "6.0",但这不代表项目已经摆脱了对 baseUrl 的真实依赖。
参考信息
- TSConfig
baseUrl: https://www.typescriptlang.org/tsconfig/baseUrl.html - TypeScript 6.0 Release Notes: https://www.typescriptlang.org/docs/handbook/release-notes/typescript-6-0.html