生成 Prisma Client
Prisma Client 是一个根据你的数据库 schema 定制生成的数据库客户端。默认情况下,Prisma Client 会被生成到 node_modules/.prisma/client
文件夹中,但我们强烈建议你指定一个输出位置。
在 Prisma ORM 7 中,Prisma Client 将不再默认生成到 node_modules
中,并且将要求定义一个输出路径。在下方了解如何定义输出路径。
生成和实例化 Prisma Client
-
确保你的机器上已安装 Prisma CLI。
npm install prisma --save-dev
-
将以下
generator
定义添加到你的 Prisma schema 中generator client {
provider = "prisma-client-js"
output = "app/generated/prisma/client"
}注意你可以自由定制输出位置以匹配你的应用程序。常见的目录包括
app
、src
,甚至是项目的根目录。 -
安装
@prisma/client
npm 包npm install @prisma/client
-
使用以下命令生成 Prisma Client
prisma generate
-
你现在可以在你的代码中实例化 Prisma Client
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 schema 后,都需要重新运行
prisma generate
命令来更新生成的 Prisma Client 代码。
这是生成 Prisma Client 的典型工作流程的图形说明
Prisma Client 的位置
我们强烈建议你定义一个自定义的 output
路径。在 Prisma ORM 6.6.0
版本中,未定义 output
路径会产生警告。在 Prisma ORM 7 中,该字段将是必填项。
使用自定义 output
路径
你还可以在 generator
配置中指定自定义 output
路径,例如(假设你的 schema.prisma
文件位于默认的 prisma
子文件夹中)
generator client {
provider = "prisma-client-js"
output = "../src/generated/client"
}
运行 prisma generate
命令生成该 schema 文件后,Prisma Client 包将位于
./src/generated/client
要从自定义位置(例如,从名为 ./src/script.ts
的文件)导入 PrismaClient
import { PrismaClient } from './generated/client'
为了更好地兼容 ECMAScript modules (ESM) 并确保 Prisma ORM 在不同 Node.js 运行时中的行为一致,你还可以使用 prisma-client 生成器(预览版)。此生成器专门设计用于解决模块解析和运行时差异带来的常见挑战,提供更顺畅的集成体验并减少与 bundlers 的冲突。
@prisma/client
npm 包
@prisma/client
npm 包包含两个关键部分
@prisma/client
模块本身,它仅在你重新安装包时更改.prisma/client
文件夹,这是根据你的 schema 生成的唯一 Prisma Client 的默认位置
@prisma/client/index.d.ts
导出 .prisma/client
export * from '.prisma/client'
这意味着你仍然可以在自己的 .ts
文件中导入 @prisma/client
import { PrismaClient } from '@prisma/client'
Prisma Client 是根据你的 Prisma schema 生成的,并且对你的项目而言是唯一的。每次你更改 schema(例如,通过执行 schema 迁移)并运行 prisma generate
命令时,Prisma Client 的代码都会随之更改
.prisma
文件夹不受 Node.js 包管理器中的 pruning 操作影响。