GitHub GraphQL API 与 TypeScript

主要观点:在my-badges项目中需集成 GitHub GraphQL API,起初手动写 TypeScript 类型维护困难,于是创建Megaera用于从查询生成类型。
关键信息:

  • 前提条件:需安装 Node.js 或 Deno 或 Bun,安装 Megaera(npm install megaera),获取 GitHub GraphQL API 访问的个人访问令牌。
  • 步骤:

    • 步骤 1:将 GraphQL 查询写在单独的.graphql文件中,如query RepositoriesQuery($login: String!) {...}
    • 步骤 2:运行npx megaera --schema=./schema.graphql./repositories.graphql生成repositories.graphql.ts文件,包含查询及生成的类型。
    • 步骤 3:使用生成的类型,通过query()函数调用并继承类型,如const repositories = await query(RepositoriesQuery, { login: 'antonmedv' });
    • 步骤 4:使用片段时,Megaera 会生成单独的类型,可独立使用或与其他查询结合。
  • 与 GraphQL Codegen 的区别:Megaera 生成操作(查询和突变)的类型,而非整个模式的类型,且配置更简单,只需一个 CLI 工具。
    重要细节:
  • RepositoriesQuery类型通过&附加到查询,方便在代码中继承类型。
  • 在使用片段时,生成的类型可独立使用,如const Repository = {...}
  • Megaera简化了 GraphQL 工作流程,同时保持了可扩展性。
阅读 8
0 条评论