WHAT - graphql 系列(二)- graphql-codegen

前言

graphql-codegen 是一个工具,用于生成 TypeScript 类型、查询和其他 GraphQL 相关代码。它可以大大简化 GraphQL 开发过程,提高开发效率和代码一致性。

以下是如何使用 graphql-codegen 来为你的项目生成 TypeScript 类型和其他代码的一些基本步骤和示例配置。

1. 安装 graphql-codegen

首先,你需要安装 graphql-codegen 及其相关依赖。你可以使用以下命令来安装:

npm install @graphql-codegen/cli @graphql-codegen/typescript @graphql-codegen/typescript-operations @graphql-codegen/typescript-react-apollo graphql

或者使用 yarn

yarn add @graphql-codegen/cli @graphql-codegen/typescript @graphql-codegen/typescript-operations @graphql-codegen/typescript-react-apollo graphql

2. 创建 codegen.yml 配置文件

在项目根目录下创建一个 codegen.yml 文件,配置你的生成选项。以下是一个示例配置:

schema:
  - 'https://your-graphql-endpoint.com/graphql' # GraphQL API schema endpoint
documents: './src/**/*.graphql' # Path to your GraphQL queries and mutations
generates:
  ./src/generated/graphql.ts: # Path to generate TypeScript types
    plugins:
      - 'typescript' # Generates TypeScript types
      - 'typescript-operations' # Generates TypeScript types for operations (queries, mutations)
      - 'typescript-react-apollo' # Generates React Apollo hooks

3. 添加 GraphQL 查询和突变文件

确保你的项目中有 .graphql 文件,这些文件包含了你的 GraphQL 查询和突变。例如,你可以在 src/queries 目录下创建 getUser.graphql 文件:

# src/queries/getUser.graphql
query GetUser($id: ID!) {
  user(id: $id) {
    id
    name
    email
  }
}

4. 运行 Codegen

package.json 文件中添加一个 codegen 脚本来运行 graphql-codegen

"scripts": {
  "codegen": "graphql-codegen"
}

然后,运行以下命令来生成代码:

npm run codegen

或者使用 yarn

yarn codegen

5. 使用生成的代码

生成的 TypeScript 类型和 React Apollo hooks 会在 src/generated/graphql.ts 文件中。你可以在你的 React 组件中使用这些生成的 hooks。例如:

import React from 'react';
import { useGetUserQuery } from './generated/graphql';

const UserProfile: React.FC<{ userId: string }> = ({ userId }) => {
  const { data, loading, error } = useGetUserQuery({
    variables: { id: userId }
  });

  if (loading) return <p>Loading...</p>;
  if (error) return <p>Error: {error.message}</p>;

  return (
    <div>
      <h1>{data?.user.name}</h1>
      <p>{data?.user.email}</p>
    </div>
  );
};

export default UserProfile;

6. 配置其他选项

你可以根据需要配置 graphql-codegen 的其他选项,如自定义生成代码的格式、启用缓存等。详细的配置选项可以参考 GraphQL Code Generator 文档.

总结

graphql-codegen 可以极大地提高 GraphQL 项目的开发效率,通过自动生成类型和 hooks,帮助你减少重复代码和类型错误。你可以根据项目的实际需求和 GraphQL 服务的复杂性调整配置和生成的内容。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值