跳至主要内容

生成器

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>