tsc 尝试编译我的 monorepo 中的所有内容,而不仅仅是一个包

问题描述 投票:0回答:1

我对我想象中的一个微不足道的问题束手无策,但我公司的多个开发人员已经为此感到困惑了一段时间。

我们正在迁移到 monorepo,其中将包括我们的遗留代码库,主要是为了我们可以从旧 API 中提取类型。我们正在使用 Turborepo 和 pnpm。

相关部分文件结构如下

├── services
│   ├── backend
│   │   ├── $some_files
│   ├── nest-api
│       ├── $some_files

backend
包中的一些代码包含一个
import type { Baz } from "@acme/nest-api/src/modules/foo/bar/baz"
语句,该语句从
nest-api
包中提取类型。当 tsc 在
backend
包上运行时,tsc 尝试使用
nest-api
包中的
tsconfig
文件中的配置构建整个
backend
包,但会失败,因为
nest-api
包需要更宽松的配置。

在 tsc 日志中,它指的是像

../nest-api/src/modules/foo/bar/baz.ts:15
这样的文件 - 我很困惑 tsc 如何逃脱
backend/src
中所有文件的范围并进入这个目录。是否有一个简单的 tsconfig 设置我们错过了或者正在进行其他操作?

我知道这是一个模糊的问题,但我真的希望有人可以提供帮助 - 如果需要,我可以提供更多详细信息,但老实说,我不确定要提供什么!

运行

turbo run build --filter nextjs
应该会导致存储库成功构建。相反,它失败了。

typescript monorepo tsc pnpm turborepo
1个回答
0
投票

我在 pnpm 上遇到了这个问题。

在项目根目录的 tsconfig.json 文件中 确保您使用的是“参考文献”部分。

我的设置已经开始工作了 制作一个 tsconfig.base.json,其中包含整个项目的通用 tsc 设置。

tsconfig.json 扩展 tsconfig.base.json 并包含对所有 monorepo 包的引用。

然后,您还可以使用项目根目录下的 tsconfig.base.json 来扩展这些引用的 tsconfig.json 文件

您还可以自动管理引用(您仍然需要运行脚本) “update-ts-references”包就可以解决这个问题。

© www.soinside.com 2019 - 2024. All rights reserved.