Schema 位置
Prisma Schema 的預設名稱為 schema.prisma,位於您的 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 Schema 自 v6.7.0 起正式支援(GA)。在此之前,需透過 prismaSchemaFolder 預覽功能旗標啟用。
使用方法
使用多檔案 Prisma Schema 時,您必須明確指定包含所有 Schema 檔案(包含帶有 generator 區塊的主 schema.prisma 檔案)的目錄路徑。
您可以透過以下三種方式之一來達成:
-
在 Prisma CLI 指令中傳入
--schema選項(例如: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 Config file) 來指定 Prisma Schema 的位置。這是將 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 generate 和 prisma migrate dev 等 Prisma CLI 指令無需額外設定即可運作,因為 ./prisma/schema.prisma 為預設位置。
多檔案 Prisma Schema 的建議技巧
我們發現以下幾種模式對於此功能非常有效,能協助您獲得最佳的使用體驗:
- 按領域組織檔案:將相關的 Model 分組到同一個檔案中。例如,將所有使用者相關的 Model 放在
user.prisma,而文章相關的 Model 則放在post.prisma。 - 使用清晰的命名慣例:Schema 檔案名稱應簡潔明瞭。使用如
user.prisma和post.prisma,而不是myModels.prisma或CommentFeaturesSchema.prisma。 - 擁有明確的「主」Schema 檔案:雖然現在可以擁有任意數量的 Schema 檔案,但您仍需要一個地方定義
generator區塊。我們建議保留一個明確的「主」檔案,以便於尋找該區塊。我們看過運作良好的命名包括main.prisma、schema.prisma和base.prisma。
範例
我們對 dub by dub.co 的 fork 版本,是一個將真實專案調整為使用多檔案 Prisma Schema 的絕佳範例。