typescript - 为什么 Typescript 项目引用使用父 tsconfig 文件而不是引用自己的 tsconfig 文件?
问题描述
我有两个项目:app
和lib
. app
取决于lib
。
app
是一个严格的 Typescript 项目,lib
不适用于 strict。
我使用 Typescript Project References 将它们连接在一起:
"compilerOptions": {
"strict": true,
},
"references": [
{ "path": "./apps/app" },
{ "path": "./libs/lib/" }
]
"extends": "../../tsconfig.json",
"references": [
{
"path": "../../libs/lib/tsconfig.json"
}
]
"extends": "../../tsconfig.json",
"compilerOptions": {
"composite": true,
"strict": false
},
但是当我运行时,app
我会失败,因为lib
代码正在运行,就好像严格为真:
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
将严格指定为假!如果严格被禁用,它工作正常。如何配置 Typescript 以便项目实际上是独立的,并且每个项目中的代码都使用自己的 tsconfig 选项?
我在这里准备了一个示例存储库:https ://github.com/gaggle/monorepo-tsconfig-experiment 。欢迎任何想法和建议!
只是为我的问题提供一些背景信息:我想将几个项目移动到一个 monorepo,但并非所有代码都可以使用相同的编译器选项。“严格”的区别就是一个例子,我不能只修复代码,所以它们都可以使用相同的选项。
解决方案
我让你的示例仓库很容易构建——我唯一的麻烦是它不完整,这告诉我你实际上并没有尝试构建它。Project.json 缺少依赖项。
但更重要的是,我可以看出您没有花太多时间阅读项目参考是如何工作的,也没有阅读太多项目参考页面。所以我犹豫是否只是为你做你的工作并给你最终的答案。相反,我会给你一个你不理解的东西的清单,提示你做错了什么。
这些是tsconfig
您弄错的设置:
composite
rootDir
include
files
tsconfig
你的三个s中的每一个都至少有一个问题。
修复这些 和tsc -b .
,tsc -b apps/app
并且tsc -b libs/lib
将按预期工作。
如果您取得了进展,但仍然感到困惑或卡住,那么我会提供帮助。更新示例 repo 和您的问题,并表明您尝试过。
推荐阅读
- java - 设置 STRUCT 类型的默认值时 Kafka Connect API 错误
- html - 使右上角对齐的图像可点击
- apache-zookeeper - 如何为 Zookeeper 服务器启用 JMX 端口
- python - 单击来自 gmail 收件箱 Python 的特定电子邮件
- javascript - 即使将获取数据转换为数组,我也无法访问这些元素
- android - 如果用户长时间没有写入,如何使用 Firebase Cloud Functions 在 Firebase 数据库中设置节点的值?
- python - Python OpenHardwareMonitor 和 WMI 获取 cpu temps
- mongodb - 如何使用 MongoTemplate 在 MongoDB 中的嵌套文档上应用分组?
- html - 当我调整屏幕大小时,为什么我的 CSS 布局会不断中断?
- python - How to pass Dynamic values to Url by Loop using Python