别名 - TypeScript 路径别名在项目引用中停止工作
之前,我遇到了一个关于 package.json 不在 rootDir 下的问题,但后来,我在 StackOverflow 上找到了一个针对完全相同问题的提问,在按照这个答案建议的步骤操作后,当我尝试通过运行 tsc --build src 生成声明文件时,我的路径别名未被 tsc 识别
注意:我没有在
tsconfig.json中包括与声明相关的属性,比如"declaration": true或"emitDeclarationOnly": true,因为我起初甚至无法转译代码,而且我专注于让路径别名生效,因为它们似乎是一个比.d.ts生成更复杂且独立的问题,如果这成为问题,我之后会在同一个问题的评论中补充。
文件结构:
.
├── src/
│ ├── helpers/
│ │ └── parseOptions.ts
│ ├── eswatch.ts
│ └── tsconfig.json
├── package.json
└── tsconfig.json
./tsconfig.json
{
"compilerOptions": {
"rootDir": ".",
"outDir": ".",
"resolveJsonModule": true,
"composite": true,
},
"files": ["package.json"],
}
./src/tsconfig.json
{
"compilerOptions": {
"rootDir": ".",
"outDir": "../types",
"resolveJsonModule": true
},
"paths": {
"@eswatch/*": ["./*"]
},
"references": [
{ "path": "../" }
]
}
当与项目引用一起使用时,路径别名根本无法被识别,理想情况下,它们应像平常一样工作,因此,声明文件应该被生成
答案#1
解决了!结果发现是一个非常愚蠢的错误,不知怎么没被发现,tsconfig.json 的 paths 属性应该放在 compilerOptions 内,而不是在对象根级别,下面的配置对我有效:
{
"compilerOptions": {
"rootDir": ".",
"outDir": "../types",
"resolveJsonModule": true,
"paths": {
"@eswatch/*": ["./*"]
}
},
"references": [
{ "path": "../" }
]
}
