You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

是否存在工具或NPM包可从GraphQL Schema自动生成Fragment?

从GraphQL实体自动生成Fragment的工具方案

需求说明

给定GraphQL实体定义:

type Action @entity(immutable: true) {
  id: String!
  subgraphId: BigInt!
  block: BigInt!
  chainId: BigInt!
  from: Bytes!
  hash: Bytes!
  timestamp: BigInt!
  category: ActionCategory!
  contract: Bytes!
  fee: BigInt
  addressA: Bytes
  addressB: Bytes
  amountA: BigInt
  amountB: BigInt
}

需要自动生成包含该实体所有字段的Fragment:

fragment ActionFragment on Action {
  id
  addressA
  addressB
  amountA
  amountB
  block
  category
  chainId
  contract
  from
  hash
  subgraphId
  timestamp
}

由于Schema内实体数量较多,手动处理效率低下,需自动化解决方案。

可用工具与实现方式

  • graphql-codegen:这是生态中最成熟的GraphQL代码生成工具,支持通过配置批量生成Fragment。你可以配置对应的插件(如结合自定义模板的@graphql-codegen/typescript,或直接使用Fragment生成类插件),指定要处理的实体,工具会自动遍历Schema,提取每个实体的所有字段,生成符合格式要求的Fragment。
  • graphql-fragment-generator:一款轻量的专用工具,可直接读取GraphQL Schema文件,批量生成包含实体全部字段的Fragment,配置步骤简单,适合快速批量处理场景。
  • 自定义Node.js脚本:如果现有工具无法完全匹配你的格式需求,可基于graphql核心包编写脚本:加载Schema并解析为抽象语法树(AST),遍历每个实体类型节点,提取所有字段名称,再按照Fragment的语法格式拼接输出内容。这种方式灵活性最高,能完全贴合你的输出要求。

内容的提问来源于stack exchange,提问作者Paul Razvan Berg

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.12 17:36:07