2024 年 6 月 4 日

在 v5.15 版本中将您的 Prisma Schema 组织到多个文件中

我们很高兴推出 Prisma ORM 中的一项新的预览功能:将您的 Prisma Schema 组织到多个文件中。了解如何在您的项目中实现此功能,探索最佳实践,并查看我们的示例项目以获得实践示例。

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

这经历了一段漫长的道路,但在 Prisma ORM 5.15.0 中,我们终于引入了在您的 Prisma Schema 中使用多个文件的能力。这旨在提高数据库 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 拆分为多个文件,首先通过将其包含在您的 generatorpreviewFeatures 字段中来启用 prismaSchemaFolder 预览功能。

然后,在您的 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 fork 的 dub,dub.co 是我们最喜欢的 OSS 项目之一!

我们希望听到您的反馈!

我们很乐意听取您对这项新功能的想法。请通过在我们的专用 GitHub 讨论中评论来分享您的反馈以及您可能遇到的任何问题。

不要错过下一篇文章!

注册 Prisma Newsletter