Prisma v2 如何从schema.prisma生成可供编辑的.graphql文件?
Prisma v2+ 生成GraphQL Schema方案
Prisma v2及更高版本官方已经移除了内置的GraphQL Schema生成能力,你可以通过以下两种方式实现从schema.prisma生成GraphQL文件的需求:
- 方案一:使用社区维护的Prisma生成器
目前有多个成熟的社区生成器支持直接输出GraphQL SDL文件,操作步骤如下:- 安装对应生成器依赖,以
prisma-graphql-schema为例:npm install -D prisma-graphql-schema - 在你的
schema.prisma中新增生成器配置:
generator graphql { provider = "prisma-graphql-schema" output = "./generated/graphql.schema" // 可根据需求配置是否生成关联字段、标量映射规则等 }- 执行
npx prisma generate,即可在配置的输出目录得到全量的GraphQL类型定义文件,你可以直接在此基础上删除不需要暴露的类型、字段,自行补充Query、Mutation定义即可。
- 安装对应生成器依赖,以
- 方案二:自定义脚本生成(灵活度更高)
如果你不想依赖第三方包,也可以通过Prisma官方提供的元数据API自行生成:- 安装
@prisma/sdk依赖:npm install -D @prisma/sdk - 编写简单的Node脚本读取
schema.prisma的DMMF元数据,遍历所有模型、字段规则,拼接生成符合你要求的GraphQL SDL字符串,写入到指定.graphql文件即可,你可以在生成阶段直接过滤不需要暴露的内容,无需后续手动修改。
- 安装
注意:生成的GraphQL类型默认会匹配Prisma的标量规则,比如
DateTime、Json这类非标量类型,你需要在Apollo Server中提前注册对应的GraphQL自定义标量保证类型兼容。
内容的提问来源于stack exchange,提问作者CSSer
相关产品推荐
相关产品推荐

