跳至主要內容

Schema 位置

Prisma Schema 的預設名稱為 schema.prisma,位於您的 prisma 資料夾中。當您的 Schema 命名為此格式時,Prisma CLI 會自動偵測到它。

Prisma Schema 位置

Prisma CLI 會依序在以下位置尋找 Prisma Schema:

  1. --schema 旗標指定的位置,該旗標可用於 introspectgeneratemigratestudio 等指令。

    prisma generate --schema=./alternative/schema.prisma
  2. package.json 檔案中指定的位置(適用於 2.7.0 及更高版本)。

    "prisma": {
    "schema": "db/schema.prisma"
    }
  3. 預設位置

    • ./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 generateprisma migrate dev 等 Prisma CLI 指令無需額外設定即可運作,因為 ./prisma/schema.prisma 為預設位置。

多檔案 Prisma Schema 的建議技巧

我們發現以下幾種模式對於此功能非常有效,能協助您獲得最佳的使用體驗:

  • 按領域組織檔案:將相關的 Model 分組到同一個檔案中。例如,將所有使用者相關的 Model 放在 user.prisma,而文章相關的 Model 則放在 post.prisma
  • 使用清晰的命名慣例:Schema 檔案名稱應簡潔明瞭。使用如 user.prismapost.prisma,而不是 myModels.prismaCommentFeaturesSchema.prisma
  • 擁有明確的「主」Schema 檔案:雖然現在可以擁有任意數量的 Schema 檔案,但您仍需要一個地方定義 generator 區塊。我們建議保留一個明確的「主」檔案,以便於尋找該區塊。我們看過運作良好的命名包括 main.prismaschema.prismabase.prisma

範例

我們對 dub by dub.co 的 fork 版本,是一個將真實專案調整為使用多檔案 Prisma Schema 的絕佳範例。

© . This site is unofficial and not affiliated with Prisma Data, Inc.