是否存在工具或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
相关产品推荐
相关产品推荐

