gpt4 book ai didi

typescript - 为什么 Typescript 项目引用使用父 tsconfig 文件而不是引用自己的 tsconfig 文件?

转载 作者:行者123 更新时间:2023-12-04 07:27:05 27 4
gpt4 key购买 nike

我有两个项目:applibapp 依赖于 lib

app 是一个严格的 Typescript 项目,lib 不工作 严格。

我使用 Typescript 项目引用将它们连接在一起:

./tsconfig.json

  "compilerOptions": {
"strict": true,
},
"references": [
{ "path": "./apps/app" },
{ "path": "./libs/lib/" }
]

./apps/app/tsconfig.json

  "extends": "../../tsconfig.json",
"references": [
{
"path": "../../libs/lib/tsconfig.json"
}
]

./libs/lib/tsconfig.json

  "extends": "../../tsconfig.json",
"compilerOptions": {
"composite": true,
"strict": false
},

但是当我运行 app 时,我失败了,因为 lib 代码正在运行,就好像 strict 是真的一样:

TSError: ⨯ Unable to compile TypeScript:
../../libs/lib/src/index.ts:4:3 - error TS2564: Property 'uninitializedProperty' has no initializer and is not definitely assigned in the constructor.

但是 lib 将 strict 指定为 false!如果严格被禁用,它工作正常。我如何配置 Typescript,使项目实际上是独立的,并且每个项目中的代码使用它们自己的 tsconfig 选项?

我在这里准备了一个示例存储库:https://github.com/gaggle/monorepo-tsconfig-experiment .欢迎任何想法和建议!


只是为了说明我的问题的一些背景:我想将几个项目移动到一个 monorepo,但并非所有代码都可以使用相同的编译器选项。 “严格”的区别就是一个例子,我不能只修改代码,让它们都使用相同的选项。

最佳答案

我很容易构建您的示例存储库——我遇到的唯一问题是它不完整,这告诉我您实际上并没有尝试构建它。 Project.json 缺少依赖项。

但更重要的是,我可以看出您没有花太多时间阅读项目引用的工作原理,也没有阅读很多 project references 的内容页。所以我犹豫是否只为你做你的工作并给你最终的答案。相反,我会给你一张你不理解的东西的 list ,提示你哪里错了。

这些是你错误的 tsconfig 设置:

  • 复合
  • rootDir
  • 包含
  • 文件

您的三个 tsconfig 中至少有一个错误。

修复这些问题,tsc -b .tsc -b apps/apptsc -b libs/lib 都将按预期工作.

如果你取得了进步但仍然感到困惑或卡住了,那么我会提供帮助。更新示例存储库和您的问题,并表明您已尝试过。

关于typescript - 为什么 Typescript 项目引用使用父 tsconfig 文件而不是引用自己的 tsconfig 文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68155823/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com