Def*_*mat 5 compilation typechecking typescript
我们正在尝试使用Typescript的monorepo方法(Yarn的工作空间).
例如,我们有两个库:@project/main和@project/common.
每个库中的tsconfig.json如下所示:
{
...
"baseUrl": "./"
}
Run Code Online (Sandbox Code Playgroud)
这允许我们在每个库中使用绝对导入.
现在假定,一个index.ts在@项目/主库包含:
import { foo } from "@project/common";
Run Code Online (Sandbox Code Playgroud)
和index.ts在@项目/通用包含:
export * from "src/functions";
Run Code Online (Sandbox Code Playgroud)
在@ project/main的类型检查/编译期间,Typescript将尝试在@ project/main/src/functions.ts中找到一个foo函数,而不是@ project/common/src/functions.ts
这是因为Typescript将正确地遵循"@ project/common"导入,然后,它将尝试遵循"src/functions"导出.然而,这种进口是绝对的,所以打字稿将使用的baseUrl,这是领导对"@计划/主".
为了解决这个问题,我们可以添加如下内容:
{
"paths": {
"*": [
"*",
"../../node_modules/@project/common/*"
]
}
},
Run Code Online (Sandbox Code Playgroud)
到" @project/main"包的tsconfig.json.
这可以解决我们的问题,直到我们将一个functions.ts文件添加到主项目(@project/main/src/functions.ts).
现在,打字稿将使用functions.ts从@项目/主,而不是@项目/常见,这显然是一个不被接受的行为.
所以,我的问题是:是否有可能配置一个打字稿使用的baseUrl从tsconfig.json,位于旁边与目前处理的文件或它的父目录?
| 归档时间: |
|
| 查看次数: |
1791 次 |
| 最近记录: |