npm包@graphql-codegen/add使用教程

阅读时长 4 分钟读完

前言

随着GraphQL在近年来的普及,越来越多的开发者开始使用GraphQL来实现API的构建。GraphQL可以方便地管理多个API端点,且可以在客户端精确地指定需要的数据,这使得GraphQL在前端开发中变得越来越流行。

然而,GraphQL开发过程中的一些繁琐的工作,例如生成各种标准的hooks、组件和Typescript定义文件,却是比较累人的。这时,@graphql-codegen/add就是一款能够帮助解决这些问题的工具库。

安装

首先,我们需要在项目根目录下使用npm或者yarn安装@graphql-codegen包。

如何使用@graphql-codegen/add

@graphql-codegen/add提供了一些常见的生成器,例如hooks、类型定义文件、组件等等。我们可以在项目中使用它来生成这些文件,从而大大减少重复造轮子的工作。

生成hooks

在使用@graphql-codegen/add生成hooks之前,我们需要先使用@graphql-codegen/cli生成配置文件。在项目根目录下新建一个名为codegen.yaml的文件,在该文件中输入如下配置信息:

-- -------------------- ---- -------
---------- ----
------- ----------------------------------------------
---------- ------------------
----------
  -------------------------
    --------
      - ----------
      - ---------------------
  -----------------
    --------
      - ----------
      - ---------------------
      - -----------------------
    -------
      ---------- ----

在该配置文件中,我们需要指定GraphQL的schema和要生成的文件路径。同时,我们还需要指定使用哪些生成器,这里我们使用了typescript-react-apollo插件用于生成hooks。

接下来,我们可以使用如下命令来生成hooks:

生成的hook文件会自动放置在src/graphql下。

生成组件

与生成hook类似,我们也需要先配置好codegen.yaml文件。下面是一个用于生成组件和类型定义文件的配置示例:

-- -------------------- ---- -------
---------- ----
------- ----------------------------------------------
---------- ------------------
----------
  -------------------------
    --------
      - ----------
      - ---------------------
  -------------------------------
    --------
      - ----------
      - -----------------------
    -------
      -------------- ----
      ---------- ----
      -------- -----
  -------------------------
    --------
      - ----------
      - ---------------------

与生成hooks不同,使用typescript-react-apollo插件生成组件时,我们可以使用withComponent选项来指定是否生成组件代码。

使用如下命令,我们即可生成组件相关的代码:

生成的组件文件会自动放置在src/generated下。

总结

使用@graphql-codegen/add可以大幅减轻我们GraphQL开发过程中的工作量。通过简单的配置codegen.yaml文件,我们即可生成众多常见的代码组件,例如hooks、组件和类型定义文件。同时,@graphql-codegen/add也提供了其他丰富的功能,例如代码格式化等等。希望这篇教程能够帮助你更加了解这个npm包的使用方法。

来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/192734