npm包@apollographql/graphql-language-service-types使用教程

阅读时长 6 分钟读完

介绍

@apollographql/graphql-language-service-types是一个Apollo GraphQL的语言服务类型包。这个包适用于编写类似于graphql-language-service这样的插件,以便使用这些插件来提高IDE的GraphQL支持水平。

本文将介绍如何使用@apollographql/graphql-language-service-types,以便为GraphQL编写语言服务插件。

安装

可以在npm仓库中使用以下命令来安装@apollographql/graphql-language-service-types

使用

@apollographql/graphql-language-service-types导出了许多用于语言服务插件的类型和接口。在本节中,我们将介绍一些核心接口以及如何使用它们。

Diagnostic接口

该接口描述了一个语法或语义错误的严重级别。该接口使用了TypeScript的枚举类型,枚举名称遵循语义化版本控制规范

DiagnosticRelatedInformation接口

该接口描述了与某个诊断消息相关的更详细的信息。例如,如果有一条错误消息,DiagnosticRelatedInformation可以用于指定应该如何解决该错误。

DiagnosticWithLocation接口

该接口描述了拥有关联位置的诊断消息。这个接口将DiagnosticDiagnosticRelatedInformation组合在一起,以生成一个包含错误消息和源代码位置的对象。

SourceLocation接口

该接口描述在GraphQL源代码中的位置。该接口具有linecolumn两个属性。

示例代码

下面是一个简单的GraphQL插件,可将包含特定字符(“TODO”)的查询字符串标记为警告。

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

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

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

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

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

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

结论

@apollographql/graphql-language-service-types是一个神奇的npm包,提供了非常有用的接口和类型,可用于创建Apollo GraphQL的语言服务插件。虽然本篇文章仅介绍了几个核心接口,但读者可以使用这些接口作为构建企业级语言服务插件的入门。

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

纠错
反馈