2024年6月4日

在 v5.15 中將您的 Prisma Schema 組織到多個檔案中

我們很高興地在 Prisma ORM 中引入一項新的預覽功能:將您的 Prisma Schema 組織到多個檔案中。瞭解如何在您的專案中實現此功能,探索最佳實踐,並檢視我們的示例專案以獲取動手示例。

An image showing several .prisma files with the text "Split your schema!"

更新(2025年6月):此功能已在 v6.7.0 中正式釋出。您現在無需再將其包含在 previewFeatures 中。在文件中瞭解更多資訊。

一路走來不易,但隨著 Prisma ORM 5.15.0 的釋出,我們終於引入了在 Prisma Schema 中使用多個檔案的功能。這旨在提高資料庫模式的可管理性和組織性,使其更易於處理大型專案。作為我們最受期待的功能之一,我們希望您能試用 prismaSchemaFolder 預覽功能,並在 GitHub 上告訴我們您的想法。您的持續反饋將幫助我們交付這樣的功能!

多檔案 Prisma Schema 預覽功能包含什麼

新的 prismaSchemaFolder 預覽功能允許您在 prisma 目錄的 schema 子目錄中定義多個檔案。Prisma 負責合併檔案,讓您可以在一個檔案中定義模型,然後在其他 schema 檔案中使用它,而無需匯入。我們還更新了 Prisma Visual Studio Code 擴充套件,以處理多個 schema 檔案,包括“跳轉到定義”和存在性檢查。

An image of Visual Studio Code showing multiple .prisma files in a schema sub-directory of the prisma directory.

如何將您的 Prisma Schema 拆分為多個檔案

首先,請確保 prisma@prisma/client 已更新到至少 5.15.0。您還需要最新版本(5.15.0)的 Prisma VSCode 擴充套件,以便在您的 IDE 中利用這些更新。

要將您的 Prisma Schema 拆分為多個檔案,首先,透過將 prismaSchemaFolder 預覽功能包含在 generatorpreviewFeatures 欄位中來啟用它。

然後,在您的 prisma 目錄下建立一個 schema 子目錄。您可以將 schema.prisma 移動到此目錄中。

現在,您可以在 schema 目錄中建立更多檔案了!所有模型都可以在所有檔案中引用,因此關係可以跨檔案,例如

執行 prisma generate 時,所有 schema 檔案都會合並,因此您的工作流程將照常進行。其他 Prisma CLI 命令,例如 validateformat 也已更新,以支援多檔案 Prisma Schema。

何時使用多檔案 Schema

我們聽說並看到,隨著專案的增長,單檔案 Prisma Schema 最終會變得過於龐大,難以有效管理。如果您滿足以下條件,您將立即從該功能中受益:

  • 擁有複雜 Schema:如果您的 Schema 包含大型模型或複雜關係,將相關模型放入單獨的檔案中可以幫助您的 Schema 更易於理解和導航。
  • 擁有大型團隊:當您只有一個 Prisma Schema 檔案並且有許多開發人員提交程式碼時,您可能會在日常工作中遇到一些相當煩人的合併衝突。將大型 Schema 拆分為多個檔案可以幫助減輕這種痛苦。

多檔案 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 分支,這是我們最喜歡的開源專案之一!

期待您的反饋!

我們非常樂意聽取您對這項新功能的看法。請在我們的專門 GitHub 討論 中評論,分享您的反饋和遇到的任何問題。

不要錯過下一篇文章!

訂閱 Prisma 新聞通訊

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