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

阅读时长 9 分钟读完

前言

GraphQL 在 Web 开发中得到越来越广泛的应用,而且随着 GraphQL API 数量的增加,我们不得不考虑代码生成(Code Generation)的问题。虽然 Code Generation 形式多样,但是我们可以使用 @graphql-codegen 包来自动生成一些 GraphQL 相关的代码。

@graphql-codegen/plugin-helpers 包则提供了一组工具函数,让我们方便地编写自定义的 GraphQL 生成器。

安装

我们可以使用 npm 或者 yarn 来安装 @graphql-codegen/plugin-helpers 包:

使用

在编写自定义的生成器时,我们可以使用 @graphql-codegen/plugin-helpers 提供的函数来获取必要的信息。

parseImportLine

从 import 语句中解析出导入的模块名称以及默认导出的名称。

stripMapperTypeInterpolation

将映射类型中的插值和空格去掉。

getBaseTypeNode

获取 GraphQL 类型的基本类型节点。

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

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

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

convertNameParts

根据配置文件中的命名规则转换名称。

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

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

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

groupTypes

根据给定的配置文件将类型分组。

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

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

例子

下面是一个使用 @graphql-codegen/plugin-helpers 的例子,它使用 graphql-codegen-core 中提供的 Config 的信息来生成查询操作。

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

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

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

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

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

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

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

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

这是如何在 package.json 中配置的样例:

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

这是 schema.ts 文件的样例:

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

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

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

结论

@graphql-codegen/plugin-helpers 是一个实用的 npm 包,它封装了一些常用的工具函数,让我们能够更加方便的编写自定义的 GraphQL 生成器。本文介绍了该包的基本使用方式,并提供了一个例子来说明如何使用该包来实现具体的生成器。在任何写代码中,选择性、方便和能力都非常重要,所以使用 @graphql-codegen/plugin-helpers 的能力,将为您的前端开发工作增加灵活性和低调的技巧。

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