生成器
Prisma Schema 可以包含一个或多个生成器,由 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
二进制目标是默认值。如果你想为部署到不同环境包含其他 二进制目标,可以显式设置它。
社区生成器
以下是社区创建的生成器的列表。如果你想创建自己的生成器,可以使用 create-prisma-generator
CLI,由我们社区成员 Yassin Eldeep 构建。
注意: 社区项目不受 Prisma 的维护或官方支持,某些功能可能不同步。请自行谨慎使用。如果你创建了一个社区生成器,请使用以下命名约定:
prisma-generator-<custom-name>
。
prisma-dbml-generator
: 将 Prisma Schema 转换为 数据库标记语言 (DBML),允许轻松地进行可视化表示prisma-docs-generator
: 为 Prisma Client 生成单个 API 参考prisma-json-schema-generator
: 将 Prisma Schema 转换为 JSON Schemaprisma-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 模型投影到 GraphQLprisma-nestjs-graphql
: 从 Prisma 模式生成对象类型、输入、参数等,供@nestjs/graphql
模块使用prisma-appsync
: 为 AWS AppSync 生成完整的 GraphQL APIprisma-kysely
: 为 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 模式生成类,这些类可以用作 DTO、Swagger 响应、TypeGraphQL 等等。zod-prisma
: 从你的 Prisma 模型创建 Zod 模式。prisma-pothos-types
: 使定义基于 Prisma 的对象类型更容易,并帮助解决关系的 n+1 查询问题。 它还与 Relay 插件集成,使定义节点和连接变得容易且高效。prisma-generator-pothos-codegen
: 自动生成输入类型(用于作为参数)并自动生成解耦的类型安全基础文件,便于为 Pothos 从 Prisma 模式创建可定制的对象、查询和突变。 可选地从基础文件生成所有 CRUD。prisma-joi-generator
: 从你的 Prisma 模式生成完整的 Joi 模式。prisma-yup-generator
: 从你的 Prisma 模式生成完整的 Yup 模式。prisma-class-validator-generator
: 从你的 Prisma 模式生成带有类验证器验证的 TypeScript 模型。prisma-zod-generator
: 从你的 Prisma 模式生成 Zod 模式。prisma-trpc-generator
: 生成完全实现的 tRPC 路由器。prisma-json-server-generator
: 生成一个 JSON 文件,可以使用 json-server 运行。prisma-trpc-shield-generator
: 从你的 Prisma 模式生成一个 tRPC 盾牌。prisma-custom-models-generator
: 基于 Prisma 建议,从你的 Prisma 模式生成自定义模型。nestjs-prisma-graphql-crud-gen
: 从使用 NestJS 和 Prisma 的 GraphQL 模式生成 CRUD 解析器。prisma-generator-dart
: 生成带有 to- 和 fromJson 方法的 Dart/Flutter 类文件。prisma-generator-graphql-typedef
: 生成 graphql 模式。prisma-markdown
: 生成由 ERD 图及其描述组成的 Markdown 文档。 支持通过@namespace
注释标签对 ERD 图进行分页。prisma-models-graph
: 为没有在模式中定义严格关系的模式生成双向模型图,通过自定义模式注释工作。prisma-generator-fake-data
: 为你的 Prisma 模型生成逼真的假数据,可用于单元/集成测试、演示等。prisma-generator-drizzle
: 一个用于轻松生成 Drizzle 模式的 Prisma 生成器。prisma-generator-express
: 生成 Express CRUD 和路由器生成器函数。prismabox
: 从您的 Prisma 模型生成多功能的 typebox 架构。prisma-generator-typescript-interfaces
: 从您的 Prisma 架构生成无依赖关系的 TypeScript 接口。