【发布时间】:2021-04-20 21:33:16
【问题描述】:
以前,我遇到了一个关于package.json 不在rootDir 之下的问题,但是在按照this answer 建议的步骤之后,我可以找到一个question on 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": "../" }
]
}
在与项目引用结合使用时,根本无法识别路径别名,实际上它们应该正常工作,因此应该发出声明文件
【问题讨论】:
-
为什么会有 2 个 tsconfig.json ?
-
由于this answer上的建议
-
没那么奇怪,它在 monorepo 场景中很常见,除此之外,它是一个内置的typescript feature,所以,它打算在需要时使用,不,我不遵守诸如使用节点原生
fs模块阅读package.json或类似的丑陋黑客之类的事情 -
为什么要在应用中读取 package.json?
-
通过
-v或--version标志时显示版本字段
标签: typescript alias package.json tsconfig tsc