Schema 位置
Prisma Schema 的默认名称是你的 prisma 文件夹中的单个文件 schema.prisma。当你的 schema 采用此名称时,Prisma CLI 将自动检测到它。
Prisma Schema 位置
Prisma CLI 会按以下顺序在以下位置查找 Prisma Schema:
-
通过
--schema标志 指定的位置,该标志在你执行introspect、generate、migrate和studio时可用。prisma generate --schema=./alternative/schema.prisma -
在
package.json文件中指定的位置(2.7.0 版及更高版本)"prisma": {
"schema": "db/schema.prisma"
} -
默认位置
./prisma/schema.prisma./schema.prisma
Prisma CLI 会输出将使用的 schema 的路径。以下示例显示了 prisma db pull 的终端输出:
Environment variables loaded from .env
Prisma Schema loaded from prisma/schema.prisma
Introspecting based on datasource defined in prisma/schema.prisma …
✔ Introspected 4 models and wrote them into prisma/schema.prisma in 239ms
Run prisma generate to generate Prisma Client.
多文件 Prisma schema
如果你喜欢将 Prisma schema 拆分成多个文件,可以采用如下设置:
prisma/
├── migrations
├── models
│ ├── posts.prisma
│ ├── users.prisma
│ └── ... other `.prisma` files
└── schema.prisma
多文件 Prisma schemas 自 v6.7.0 起普遍可用。在此之前,可以通过 prismaSchemaFolder 预览功能标志使用它们。
用法
使用多文件 Prisma schema 时,你必须始终明确指定包含 schema 文件(包括带有 generator 块的主 schema.prisma 文件)的目录位置。
你可以通过以下三种方式之一进行操作:
-
将
--schema选项传递给你的 Prisma CLI 命令(例如prisma migrate dev --schema ./prisma) -
在
package.json中设置prisma.schema字段// package.json
{
"prisma": {
"schema": "./prisma"
}
} -
在
prisma.config.ts中设置schema属性(适用于 Prisma ORM v7)import { defineConfig, env } from 'prisma/config'
import 'dotenv/config'
export default defineConfig({
schema: 'prisma/schema.prisma',
migrations: {
path: 'prisma/migrations',
seed: 'tsx prisma/seed.ts',
},
datasource: {
url: env('DATABASE_URL'),
},
})注意我们建议使用 Prisma 配置文件 来指定你的 Prisma schema 的位置。这是指定你的 Prisma schema 位置以及其他配置选项最灵活的方式。
schema.prisma 文件(包含你的 generator 块)必须位于你在 schema 配置中指定的同一目录中。例如,如果你配置 schema: 'prisma',你的 schema.prisma 文件必须位于 prisma/schema.prisma,而不是子目录(例如 prisma/models/schema.prisma)中。
你还必须将 migrations 目录放在与 schema.prisma 文件相同的级别。
例如,假设 schema.prisma 定义了 generator 块,以下是正确的目录结构:
# All files must be inside the `prisma/` directory
# `migrations` and `schema.prisma` must be at the same level
prisma/
├── migrations
├── models
│ ├── posts.prisma
│ └── users.prisma
└── schema.prisma # Contains generator block
如果你的 schema 文件位于 prisma/ 目录中(如上所示),则 Prisma CLI 命令(如 prisma generate 和 prisma migrate dev)将无需额外配置即可工作,因为 ./prisma/schema.prisma 是默认位置。
多文件 Prisma Schema 的使用技巧
我们发现一些模式能很好地与此功能配合使用,并将帮助你充分利用它:
- 按领域组织文件:将相关模型分组到同一文件中。例如,将所有与用户相关的模型保存在
user.prisma中,而将与帖子相关的模型保存在post.prisma中。 - 使用清晰的命名约定:schema 文件应命名清晰简洁。使用诸如
user.prisma和post.prisma等名称,而不是myModels.prisma或CommentFeaturesSchema.prisma。 - 拥有一个明显的“主”schema 文件:虽然你现在可以拥有任意数量的 schema 文件,但你仍然需要一个定义
generator块的位置。我们建议使用一个明显的“主”schema 文件,以便轻松找到此块。我们见过一些运行良好的文件,例如main.prisma、schema.prisma和base.prisma。
示例
我们对 dub by dub.co 的分叉是一个很好的真实世界项目示例,它已适应使用多文件 Prisma Schema。