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 拆分为多个文件,您可以进行如下设置
.
├── migrations
├── models
│ ├── posts.prisma
│ ├── users.prisma
│ └── ... other `.prisma` files
└── schema.prisma
注意
多文件 Prisma schema 自 v6.7.0 起已普遍可用。在此之前,可以通过 prismaSchemaFolder
预览功能标志使用它们。
用法
使用多文件 Prisma schema 时,您必须始终明确指定包含 .prisma
文件及其 datasource
块的目录位置。
您可以通过以下三种方式之一完成此操作
- 将
--schema
选项传递给您的 Prisma CLI 命令(例如prisma migrate dev --schema ./prisma
) - 在
package.json
中设置prisma.schema
字段// package.json
{
"prisma": {
"schema": "./prisma"
}
} - 在
prisma.config.ts
中设置schema
属性import path from 'node:path'
import type { PrismaConfig } from 'prisma'
export default {
earlyAccess: true,
schema: path.join('prisma'),
} satisfies PrismaConfig<Env>
以上所有示例都假设您的 datasource
块定义在 prisma
目录中的 .prisma
文件中。
您还必须将 migrations
目录放置在定义 datasource
块的 .prisma
文件旁边。
例如,假设 schema.prisma
定义了 datasource
,下面是您需要放置 migrations 文件夹的方式
# `migrations` and `schema.prisma` must be on the same level
.
├── migrations
├── models
│ ├── posts.prisma
│ └── users.prisma
└── schema.prisma
多文件 Prisma Schema 提示
我们发现一些模式能很好地与此功能配合使用,并能帮助您充分利用它
- 按领域组织文件:将相关模型分组到同一文件中。例如,将所有用户相关模型放在
user.prisma
中,而将帖子相关模型放在post.prisma
中。 - 使用清晰的命名约定:schema 文件应命名清晰简洁。使用类似
user.prisma
和post.prisma
这样的名称,而不是myModels.prisma
或CommentFeaturesSchema.prisma
。 - 拥有一个明确的“主”schema 文件:虽然您现在可以拥有任意数量的 schema 文件,但您仍然需要一个定义
datasource
和generator
块的位置。我们建议使用一个明显是“主”的单个 schema 文件,以便这些块易于查找。main.prisma
、schema.prisma
和base.prisma
是我们见过的一些效果不错的名称。
示例
我们对 dub.co 的 dub
的分支是一个真实世界项目适应使用多文件 Prisma Schema 的绝佳示例。