具有两个或多个 @prisma/client 依赖项的 NPM 工作区

pas*_*ket 6 npm prisma npm-workspaces

我有一个 monorepo 设置。它看起来像这样:

  • 项目
    • 节点模块
      • 我的第一个项目
        • 棱镜
          • 模式棱镜
      • 我的第二个项目
        • 棱镜
          • 模式棱镜

因此,两个项目(my-first-project 和 my-second-project)都安装了 @prisma/client 并从上层的 node_modules 文件夹获取依赖项。

问题是,每当我更改 schema.prisma 文件中的某些内容(例如在 my-first-project 中)并运行它时npx prisma migrate dev --name whatever,它都会生成所有类型和内容并将其放入上层 node_modules 文件夹中。这会导致其他项目(例如我的第二个项目)出现“类型未找到”错误。

有没有办法告诉 npm 将一些依赖项保留在每个项目内单独的 node_modules 文件夹中?

Nur*_*ani 4

PrismaClient您可以配置自定义输出路径来指定应生成的位置。

例子:

generator client {
  provider = "prisma-client-js"
  output   = "../src/generated/client"
}
Run Code Online (Sandbox Code Playgroud)

你应该能够PrismaClient像这样导入:

generator client {
  provider = "prisma-client-js"
  output   = "../src/generated/client"
}
Run Code Online (Sandbox Code Playgroud)

通过在外部生成 PrismaClientnode_modules应该可以解决您的问题。