npm 包 @graphql-codegen/visitor-plugin-common 使用教程

阅读时长 10 分钟读完

前言

GraphQL 是一种 API 查询语言和服务端运行时环境。它允许客户端指定其需要的数据和格式,以及服务端提供响应数据,帮助前端开发者快速开发 Web 应用程序。而 @graphql-codegen/visitor-plugin-common 这个 npm 包则能够帮助前端开发者更加便捷地编写 GraphQL 的类型和转换处理。

本文将为读者详细介绍该 npm 包的使用教程,并提供示例代码以供参考。

前置条件

在使用 @graphql-codegen/visitor-plugin-common 之前,你需要运行如下命令安装该包以及其依赖包:

使用方法

插件简介

@graphql-codegen/visitor-plugin-common 是上下文访问器的插件,可以为 GraphQL 文档中每个访问器提供一个公共的上下文实现。它为所有的访问器提供访问器上下文,从而您可以更加容易地编写自定义的访问器。

功能特性

  • 在所有访问器中提供公共的上下文实现
  • 轻松编写自定义访问器

示例代码

首先,您需要在项目中创建一个配置文件 codegen.yml

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

然后在 src 文件夹下创建 visitor.ts 文件,编写自定义的访问器:

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

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

codegen.ymlplugins 数组中添加 visitor-plugin-common 插件,然后将自定义的访问器引入到 config 字段中:

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

运行如下命令:

则可生成如下代码:

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

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

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

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

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

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

可以看到,代码中已经根据自定义访问器生成了 FragmentTypeVisitor 相关类型,以方便在业务代码中使用。

小结

通过本文的介绍,读者可以了解到如何使用 @graphql-codegen/visitor-plugin-common 帮助前端开发者更加便捷地编写 GraphQL 的类型和转换处理。当然,该插件除了提供便捷的实现方式以外,还有很多功能特性,读者可以深入了解并灵活运用该插件,以更好地提升项目开发效率。

来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/graphql-codegen-visitor-plugin-common