知海

JavaScript:GraphQL Language Service(语言服务)

graphql-github-io-zh-Hans生态项目与库

概述

GraphQL Language Service 是一个用于构建 GraphQL 语言服务的接口,旨在为编辑器、IDE 和其他开发工具提供语言智能支持,例如诊断(diagnostics)自动补全(autocomplete)悬停提示(hover)跳转定义(go to definition) 等。它是 GraphQL 官方生态中的基础组件,许多 GraphQL 插件和工具(如 VSCode 插件)都基于它实现。

主要功能

该服务通过解析 GraphQL Schema 和文档,提供如下能力:

  • 自动完成:根据当前位置的上下文,建议字段、参数、类型、指令等。
  • 诊断(错误检查):实时提示语法错误、命名错误、类型不匹配等问题。
  • 悬停信息:在字段或类型上悬停时显示类型定义、描述等。
  • 跳转定义:快速定位到类型、字段或指令的定义位置。
  • 文档符号:提供文档结构概览,便于导航。
  • 格式化:对 GraphQL 代码进行格式化(通过配套的 prettier 插件或内置能力)。

安装

可以通过 npm 或 yarn 将 graphql-language-service 集成到你的项目中:

bash 复制代码
npm install graphql-language-service
# 或
yarn add graphql-language-service

该包通常作为构建语言服务的基础依赖,而非直接面向终端用户。如果你正在开发编辑器插件、CLI 工具或其他需要 GraphQL 语言智能的应用程序,可以基于它构建。

快速开始

下面是一个简单的示例,演示如何利用该服务获取代码补全信息:

javascript 复制代码
import { getAutocompleteSuggestions } from 'graphql-language-service';
import { buildSchema } from 'graphql';

const schema = buildSchema(`
  type Query {
    hello: String
    user(id: ID!): User
  }
  type User {
    name: String
    age: Int
  }
`);

const query = 'query { us';
const position = { line: 0, character: 11 };

const suggestions = getAutocompleteSuggestions(
  schema,
  query,
  position
);

console.log(suggestions);

该 API 会根据当前输入和光标位置,返回建议的字段名、类型名等候选列表。更多高级用法(如完整的语言服务器协议实现)可参考 GraphQL 语言服务文档

相关生态

GraphQL Language Service 是 GraphQL 官方工具链 的一部分,与以下项目紧密配合:

如果你希望在编辑器中获得开箱即用的 GraphQL 支持,推荐直接使用已有的编辑器插件,而不是自行开发。

帮助我们改进文档

发现翻译问题或内容错误?请告诉我们。