生成 Prisma 客户端
Prisma 客户端是一个生成的数据库客户端,根据你的数据库模式量身定制。默认情况下,Prisma 客户端会生成到 node_modules/.prisma/client
文件夹中,但我们强烈建议使用 你指定输出位置。
¥Prisma Client is a generated database client that's tailored to your database schema. By default, Prisma Client is generated into the node_modules/.prisma/client
folder, but we highly recommend you specify an output location.
在 Prisma ORM 7 中,默认情况下 Prisma 客户端将不再在 node_modules
中生成,并且需要定义输出路径。了解更多关于如何定义输出路径的信息。
¥In Prisma ORM 7, Prisma Client will no longer be generated in node_modules
by default and will require an output path to be defined. Learn more below on how to define an output path.
If Prisma’s Rust engine binaries cause large bundle sizes, slow builds, or deployment issues (for example, in serverless or edge environments), you can switch to the queryCompiler
Preview feature introduced in v6.7.0.
When enabled, Prisma Client is generated without a Rust-based query engine binary, reducing build artifacts and removing native binary dependencies:
generator client {
provider = "prisma-client-js"
previewFeatures = ["queryCompiler", "driverAdapters"]
}
请注意,driverAdapters
预览功能与 queryCompiler
功能同时启用。When using this architecture:
¥Note that the driverAdapters
Preview feature is required alongside queryCompiler
.
When using this architecture:
-
No Rust query engine binary is downloaded or shipped.
-
The database connection pool is maintained by the native JS database driver you install (e.g.,
@prisma/adapter-pg
for PostgreSQL).
This setup can simplify deployments in serverless or edge runtimes.在 docs here 中了解更多信息。
¥This setup can simplify deployments in serverless or edge runtimes. Learn more in the docs here.
生成并实例化 Prisma 客户端:
¥To generate and instantiate Prisma Client:
-
确保你有 Prisma CLI 安装在你的计算机上。
¥Ensure that you have Prisma CLI installed on your machine.
npm install prisma --save-dev
-
将以下
generator
定义添加到你的 Prisma 架构中:¥Add the following
generator
definition to your Prisma schema:generator client {
provider = "prisma-client-js"
output = "app/generated/prisma/client"
}注意请随意自定义输出位置以匹配你的应用。常用目录包括
app
、src
,甚至是项目的根目录。¥Feel free to customize the output location to match your application. Common directories are
app
,src
, or even the root of your project. -
安装
@prisma/client
npm 包:¥Install the
@prisma/client
npm package:npm install @prisma/client
-
使用以下命令生成 Prisma 客户端:
¥Generate Prisma Client with the following command:
prisma generate
-
你现在可以在代码中使用 实例化 Prisma 客户端:
¥You can now instantiate Prisma Client in your code:
import { PrismaClient } from 'app/generated/prisma/client'
const prisma = new PrismaClient()
// use `prisma` in your application to read and write data in your DB
重要的:每次对 Prisma 架构进行更改后,你都需要重新运行
prisma generate
命令以更新生成的 Prisma 客户端代码。¥Important: You need to re-run the
prisma generate
command after every change that's made to your Prisma schema to update the generated Prisma Client code.
以下是生成 Prisma 客户端的典型工作流程的图解说明:
¥Here is a graphical illustration of the typical workflow for generation of Prisma Client:
Prisma 客户端的位置
¥The location of Prisma Client
我们强烈建议你定义自定义 output
路径。在 Prisma ORM 版本 6.6.0
中,未定义 output
路径将导致警告。在 Prisma ORM 7 中,该字段是必需的。
¥We strongly recommend you define a custom output
path. In Prisma ORM version 6.6.0
, not defining an output
path will result in a warning. In Prisma ORM 7, the field will be required.
使用自定义 output
路径
¥Using a custom output
path
例如,你还可以在 generator
配置上指定自定义 output
路径(假设你的 schema.prisma
文件位于默认的 prisma
子文件夹中):
¥You can also specify a custom output
path on the generator
configuration, for example (assuming your schema.prisma
file is located at the default prisma
subfolder):
generator client {
provider = "prisma-client-js"
output = "../src/generated/client"
}
为该架构文件运行 prisma generate
后,Prisma 客户端包将位于:
¥After running prisma generate
for that schema file, the Prisma Client package will be located in:
./src/generated/client
要从自定义位置(例如,从名为 ./src/script.ts
的文件)导入 PrismaClient
:
¥To import the PrismaClient
from a custom location (for example, from a file named ./src/script.ts
):
import { PrismaClient } from './generated/client'
为了提高与 ECMAScript 模块 (ESM) 的兼容性,并确保 Prisma ORM 在不同的 Node.js 运行时中行为一致,你还可以使用 prisma-client
生成器(预览版)。此生成器专门设计用于处理模块解析和运行时变化方面的常见挑战,提供更流畅的集成体验,并减少与打包器的摩擦。
¥For improved compatibility with ECMAScript modules (ESM) and to ensure consistent behaviour of Prisma ORM across different Node.js runtimes, you can also use the prisma-client
generator (Preview). This generator is specifically designed to handle common challenges with module resolution and runtime variations, providing a smoother integration experience and less friction with bundlers.
@prisma/client
npm 包
¥The @prisma/client
npm package
@prisma/client
npm 包由两个关键部分组成:
¥The @prisma/client
npm package consists of two key parts:
-
@prisma/client
模块本身,仅在重新安装软件包时才会更改¥The
@prisma/client
module itself, which only changes when you re-install the package -
.prisma/client
文件夹,这是从你的架构生成的唯一 Prisma 客户端的 默认位置¥The
.prisma/client
folder, which is the default location for the unique Prisma Client generated from your schema
@prisma/client/index.d.ts
导出 .prisma/client
:
¥@prisma/client/index.d.ts
exports .prisma/client
:
export * from '.prisma/client'
这意味着你仍然在自己的 .ts
文件中导入 @prisma/client
:
¥This means that you still import @prisma/client
in your own .ts
files:
import { PrismaClient } from '@prisma/client'
Prisma 客户端是根据你的 Prisma 模式生成的,并且对于你的项目来说是唯一的。每次更改架构(例如,通过执行 模式迁移)并运行 prisma generate
时,Prisma 客户端的代码都会更改:
¥Prisma Client is generated from your Prisma schema and is unique to your project. Each time you change the schema (for example, by performing a schema migration) and run prisma generate
, Prisma Client's code changes:
Node.js 包管理器中的 .prisma
文件夹不受 pruning 的影响。
¥The .prisma
folder is unaffected by pruning in Node.js package managers.