JavaScript:GraphQL Language Service(语言服务)
graphql-github-io-zh-Hans生态项目与库
概述
GraphQL Language Service 是一个用于构建 GraphQL 语言服务的接口,旨在为编辑器、IDE 和其他开发工具提供语言智能支持,例如诊断(diagnostics)、自动补全(autocomplete)、悬停提示(hover)、跳转定义(go to definition) 等。它是 GraphQL 官方生态中的基础组件,许多 GraphQL 插件和工具(如 VSCode 插件)都基于它实现。
- 项目名称:GraphQL Language Service
- GitHub:graphql/graphql-language-service
- npm 包名:graphql-language-service
- 分类:生态项目与库
主要功能
该服务通过解析 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-language-service-server:基于 Language Server Protocol(LSP)的独立服务端。
- graphql-language-service-utils:共享的辅助工具集。
- vscode-graphql:基于该服务实现的 VSCode 扩展。
如果你希望在编辑器中获得开箱即用的 GraphQL 支持,推荐直接使用已有的编辑器插件,而不是自行开发。
帮助我们改进文档
发现翻译问题或内容错误?请告诉我们。
