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 的絕佳示例。