在多个项目之间共享 prisma 类型和枚举

Sch*_*lla 5 npm typescript prisma

目前我正在开发一个使用 prisma 提供数据的 api。该 API 被多个项目使用。在 api 中,我生成用于Prisma.ModelGetPayload定义某些 api 响应的返回类型的类型。

import { Prisma } from "@prisma/client";

export const minimalSelect = Prisma.validator<Prisma.ModelXYSelect>()({
    id: true,
    name: true
});

export type MinimalModelXY = Prisma.ModelXYGetPayload<{
    select: typeof minimalSelect;
}>;
Run Code Online (Sandbox Code Playgroud)

或者可以简单地从 prisma 客户端导入枚举。

import { EnumXY } from "@prisma/client";
Run Code Online (Sandbox Code Playgroud)

这些枚举和类型定义依赖于生成的 API 的 Prisma 客户端。

有一些解决方案可以将整个 prisma 客户端提取到 npm 包中(请参阅此处),但是,这不是我想要做的。

是否可以将这些类型提取到 npm 包中以在多个项目之间共享它们,而无需提取整个 prisma 客户端?

Nur*_*ani 4

如果您想导出 Prisma 生成的所有类型,您可以在以下位置找到所有类型:node_modules/.prisma/client/index.d.ts

您可以将此文件导出到 npm 包中并在前端应用程序中使用它。

您可以使用的另一种方法是将其发布schema.prisma到 npm 包。然后在您的其他项目中,您可以从该文件生成 prisma 客户端库schema.prisma,这样您就不需要导出 PrismaClient。