跳到主要內容

Schema 位置

Prisma Schema 的預設名稱是 prisma 資料夾中的單一檔案 schema.prisma。當您的 schema 如此命名時,Prisma CLI 將會自動偵測到它。

如果您正在使用 prismaSchemaFolder 預覽功能,則 prisma/schema 目錄中的任何檔案都會自動偵測到。

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 5.15.0 及更高版本中的 prismaSchemaFolder 預覽功能取得。

若要使用多個 Prisma Schema 檔案,請在您目前的 prisma 目錄中新增一個 schema 資料夾。啟用 prismaSchemaFolder 預覽功能後,您可以將任意數量的檔案新增至 prisma/schema 目錄。

my-app/
├─ ...
├─ prisma/
│ ├─ schema/
│ │ ├─ post.prisma
│ │ ├─ schema.prisma
│ │ ├─ user.prisma
├─ ...

如何啟用多檔案 Prisma schema 支援

對多個 Prisma Schema 檔案的支援目前為預覽狀態。若要啟用此功能,請將 prismaSchemaFolder 功能旗標新增至您 Prisma Schema 中 generator 區塊的 previewFeatures 欄位

schema.prisma
generator client {
provider = "prisma-client-js"
previewFeatures = ["prismaSchemaFolder"]
}

datasource db {
provider = "postgresql"
url = env("DATABASE_URL")
}
資訊

首次更新至 Prisma ORM 5.15.0 或更高版本時,您的 IDE 可能不會立即識別新的多檔案格式。請務必重新啟動您的 IDE 以確認您已安裝最新版本的 Prisma VS Code 擴充功能。

如何將現有的 Prisma CLI 命令與多個 Prisma schema 檔案搭配使用

對於大多數 Prisma CLI 命令,無需進行任何變更即可使用多檔案 Prisma schema。只有在需要透過選項提供 schema 的特定情況下,才需要變更命令。在這些情況下,只需將對檔案的參照替換為目錄即可。例如,以下 prisma db push 命令

npx prisma db push --schema custom/path/to/my/schema.prisma

變為以下命令

npx prisma db push --schema custom/path/to/my/schema  # note this is now a directory!

多檔案 Prisma Schema 的提示

我們發現以下幾種模式在此功能中運作良好,並且將幫助您充分利用它

  • 依領域組織您的檔案:將相關的模型分組到同一個檔案中。例如,將所有使用者相關的模型保留在 user.prisma 中,而將貼文相關的模型放在 post.prisma 中。盡量避免使用「廚房水槽」schema 檔案。

  • 使用清晰的命名慣例:schema 檔案的命名應清晰簡潔。使用諸如 user.prismapost.prisma 之類的名稱,而不是 myModels.prismaCommentFeaturesSchema.prisma

  • 擁有一個明顯的「主要」schema 檔案:雖然您現在可以擁有任意數量的 schema 檔案,但您仍然需要一個位置來定義 datasourcegenerator 區塊。我們建議您擁有一個明顯是「主要」檔案的單一 schema 檔案,以便可以輕鬆找到這些區塊。我們看到一些運作良好的名稱,例如 main.prismaschema.prismabase.prisma

範例

我們 dub.co 的 dub 的分支是一個真實世界專案的絕佳範例,該專案已改編為使用多檔案 Prisma Schema。

深入了解 prismaSchemaFolder 預覽功能

若要提供關於 prismaSchemaFolder 預覽功能的意見回饋,請參閱 我們專門的 Github 討論