跳到主要内容

生成器

一个 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` 二进制目标是特殊的。它不映射到具体的操作系统。相反,当 `native` 在 `binaryTargets` 中指定时,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` 二进制目标是默认的。如果你希望包含额外的 二进制目标 以部署到不同的环境,你可以显式地设置它。

社区生成器

注意

如果你使用 prismaSchemaFolder 预览功能来管理多个 schema 文件,那么现有的或新的生成器都不应受到影响,除非生成器手动读取 schema。

以下是社区创建的生成器列表。