生成器
Prisma 模式可以有一个或多个生成器,由 generator
块表示
generator client {
provider = "prisma-client-js"
output = "./generated/prisma-client-js"
}
生成器确定运行 prisma generate
命令时创建哪些资产。主要属性 provider
定义了创建哪个 **Prisma Client(特定于语言)** - 目前,只有 prisma-client-js
可用。或者,您可以定义任何遵循我们的生成器规范的 npm 包。此外,还可以选择使用 output
定义生成的资产的自定义输出文件夹。
Prisma Client: prisma-client-js
Prisma 的 JavaScript Client 的生成器接受多个附加属性
previewFeatures
: 要包含的 预览功能binaryTargets
:prisma-client-js
的引擎二进制目标(例如,如果您部署到 Ubuntu 18+,则为debian-openssl-1.1.x
,如果您在本地工作,则为native
)
generator client {
provider = "prisma-client-js"
previewFeatures = ["sample-preview-feature"]
binaryTargets = ["linux-musl"]
}
二进制目标
Prisma Client JS (prisma-client-js
) 使用多个 引擎。引擎是用 Rust 实现的,并以可执行的、平台相关的引擎文件形式由 Prisma Client 使用。根据您在哪个平台上执行代码,您需要正确的文件。“二进制目标”用于定义目标平台上应该存在哪些文件。
当您 将应用程序部署 到生产环境时,正确的文件尤其重要,这通常与您的本地开发环境不同。
native
二进制目标
native
二进制目标是特殊的。它不映射到具体的操作系统。相反,当在 binaryTargets
中指定 native
时,Prisma Client 会检测当前操作系统并自动为其指定正确的二进制目标。
例如,假设您正在运行 **macOS** 并指定了以下生成器
generator client {
provider = "prisma-client-js"
binaryTargets = ["native"]
}
在这种情况下,Prisma Client 会检测您的操作系统并根据 支持的操作系统列表 找到合适的二进制文件。如果您使用 macOS Intel x86 (darwin
),则会选择为 darwin
编译的二进制文件。如果您使用 macOS ARM64 (darwin-arm64
),则会选择为 darwin-arm64
编译的二进制文件。
注意:
native
二进制目标是默认值。如果您希望包含用于部署到不同环境的其他 二进制目标,则可以显式设置它。
社区生成器
以下是社区创建的生成器的列表。如果您想创建自己的生成器,您可以使用我们的社区成员 Yassin Eldeep 构建的 create-prisma-generator
CLI。
注意:社区项目不受 Prisma 维护或官方支持,某些功能可能不同步。请自行决定使用。如果您创建了一个社区生成器,请使用此命名约定:
prisma-generator-<custom-name>
。
prisma-dbml-generator
: 将 Prisma 模式转换为 数据库标记语言 (DBML),从而可以轻松地进行可视化表示prisma-docs-generator
: 为 Prisma Client 生成单个 API 参考prisma-json-schema-generator
: 将 Prisma 模式转换为 JSON 模式prisma-json-types-generator
: 为所有数据库添加了对 强类型Json
字段的支持。它在prisma-client-js
输出上进行操作,并更改 json 字段以匹配您提供的类型。有助于代码生成器、智能感知等等。所有这些都不会影响任何运行时代码。typegraphql-prisma
: 为 Prisma 模型生成 TypeGraphQL CRUD 解析器typegraphql-prisma-nestjs
:typegraphql-prisma
的分支,它也为 Prisma 模型生成 CRUD 解析器,但适用于 NestJSprisma-typegraphql-types-gen
: 从您的 prisma 类型定义生成 TypeGraphQL 类类型和枚举,生成的输出可以在下一次生成时进行编辑而不会被覆盖,并且能够在您编辑类型时纠正您的错误。nexus-prisma
:允许通过 GraphQL Nexus 将 Prisma 模型投影到 GraphQL。prisma-nestjs-graphql
:从 Prisma Schema 生成对象类型、输入、参数等,用于@nestjs/graphql
模块。prisma-appsync
:为 AWS AppSync 生成完整的 GraphQL API。prisma-kysely
:为 Kysely(一个 TypeScript SQL 查询构建器)生成类型定义。这对于从边缘运行时对数据库执行查询或编写 Prisma 中无法实现的更复杂的 SQL 查询(而不会丢失类型安全)很有用。prisma-generator-nestjs-dto
:生成带有关系connect
和create
选项的 DTO 和实体类,用于 NestJS 资源 和 @nestjs/swagger。prisma-erd-generator
:生成实体关系图。prisma-generator-plantuml-erd
:生成器,用于为 PlantUML 生成 ER 图。通过激活选项,还可以生成 Markdown 和 Asciidoc 文档。prisma-class-generator
:从你的 Prisma Schema 生成类,可以用作 DTO、Swagger 响应、TypeGraphQL 等。zod-prisma
:从你的 Prisma 模型创建 Zod Schema。prisma-pothos-types
:使定义基于 Prisma 的对象类型更容易,并帮助解决关系的 n+1 查询问题。它还集成了 Relay 插件,使定义节点和连接变得简单高效。prisma-generator-pothos-codegen
:自动生成输入类型(用作参数)并自动生成解耦的类型安全基础文件,使为 Pothos 从 Prisma Schema 创建可自定义的对象、查询和变异变得容易。可以选择从基础文件一次性生成所有 CRUD。prisma-joi-generator
:从你的 Prisma Schema 生成完整的 Joi Schema。prisma-yup-generator
:从你的 Prisma Schema 生成完整的 Yup Schema。prisma-class-validator-generator
:从你的 Prisma Schema 发射 TypeScript 模型,并附带现成的类验证器验证。prisma-zod-generator
:从你的 Prisma Schema 发射 Zod Schema。prisma-trpc-generator
:发射完全实现的 tRPC 路由器。prisma-json-server-generator
:发射一个可以使用 json-server 运行的 JSON 文件。prisma-trpc-shield-generator
:从你的 Prisma Schema 发射 tRPC shield。prisma-custom-models-generator
:根据 Prisma 建议,从你的 Prisma Schema 发射自定义模型。nestjs-prisma-graphql-crud-gen
:使用 NestJS 和 Prisma 从 GraphQL Schema 生成 CRUD 解析器。prisma-generator-dart
:生成带有 to- 和 fromJson 方法的 Dart/Flutter 类文件。prisma-generator-graphql-typedef
:生成 GraphQL Schema。prisma-markdown
:生成由 ERD 图及其描述组成的 Markdown 文档。通过@namespace
注释标签支持 ERD 图的分页。prisma-models-graph
:为 Schema 生成双向模型图,其中 Schema 中未定义严格的关系,通过自定义 Schema 注释工作。prisma-generator-fake-data
: 为您的 Prisma 模型生成逼真的假数据,可用于单元/集成测试、演示等。prisma-generator-drizzle
: 一个 Prisma 生成器,用于轻松生成 Drizzle 架构。prisma-generator-express
: 生成 Express CRUD 和路由器生成函数。prismabox
: 从您的 Prisma 模型生成通用的 typebox 架构。prisma-generator-typescript-interfaces
: 从您的 Prisma 架构生成零依赖的 TypeScript 接口。