首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在Turborepo (monorepo)中为prisma生成的模型和类型创建共享包?

如何在Turborepo (monorepo)中为prisma生成的模型和类型创建共享包?
EN

Stack Overflow用户
提问于 2022-11-22 08:49:23
回答 1查看 68关注 0票数 1

我正在使用Turborepo创建一个monorepo,它由多个Nestjs微服务和一个作为请求分发器的API网关组成。在每个微型服务中,Postgres被用作数据库,Prisma用作ORM。每个微服务都有自己的模式+ Prisma客户机,因此它不是共享模式/客户机。

我们希望为DTO以及prisma生成的类型和实体创建一个共享包。包将在所有微服务之间共享,因此如果我将从微服务生成的prisma导出到包中,则会出现循环依赖关系。

我对monorepos还不熟悉,所以这对我来说是一个复杂的话题,但我希望Stackoverflow上的人可能会在这个问题上有一些意见。很感激你!

EN

回答 1

Stack Overflow用户

发布于 2022-12-03 08:25:36

关于普里斯马和图尔博列波,我们也有类似的独舞。从我们的观点来看,有两种解决方案可以避免在monorepo中循环依赖:

1.避免

不要为所有的DTO、类型等创建一个共享的包,而是将DTO、类型等保留在它们来自的包中。

有时,它有助于重新考虑包装的大小。如果某些包使用相同的共享代码,则可以将它们合并为一个包。或者将包分成更小的包,如果您只需要共享包的一小部分的话。

2.通过额外的构建脚本来打破循环依赖关系

如果解决方案1不可能,您可以添加一个额外的构建脚本,将共享内容从包复制到共享的包中。在Turborepo中,您可以使用以//#作为前缀的全局脚本来完成任务,也可以将脚本添加到每个包中,甚至两者都添加:

代码语言:javascript
复制
// turbo.json
{
  "$schema": "https://turborepo.org/schema.json",
  "pipeline": {
    "build": {
      "dependsOn": [
        "^build",
        "extraBuildScriptFromPackages",
        "//#extraGlobalBuildScript"
      ],
// ...
    }
  }
}

我们使用解决方案2从包中收集所有元数据,并为整个monorepo创建一个共享元数据包。

对于Prisma类型,我们使用解决方案1( prisma类型)和解决方案2(结果的graphql类型)的混合。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74529773

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档