主要观点:在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 会生成单独的类型,可独立使用或与其他查询结合。
- 步骤 1:将 GraphQL 查询写在单独的
- 与 GraphQL Codegen 的区别:Megaera 生成操作(查询和突变)的类型,而非整个模式的类型,且配置更简单,只需一个 CLI 工具。
重要细节: RepositoriesQuery
类型通过&
附加到查询,方便在代码中继承类型。- 在使用片段时,生成的类型可独立使用,如
const Repository = {...}
。 - Megaera简化了 GraphQL 工作流程,同时保持了可扩展性。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。