JavaScript:GraphQL Tools(工具集)
graphql-github-io-zh-Hans生态项目与库
JavaScript:GraphQL Tools(工具集)
项目简介
GraphQL Tools 是一组用于加速 GraphQL 工具链开发的高效工具集,它提供了一套统一的工具函数与模块化 API,涵盖了 Schema 与文档的加载、Schema 合并、Schema 拼接(Stitching)等核心场景。该项目由 The Guild 团队维护,是 GraphQL 生态中被广泛使用的基础设施之一。
核心特性
- Schema Loading(Schema 加载):支持从代码、SDL 文本、GraphQL Endpoint、JSON 文件等多种来源加载 GraphQL Schema,统一了不同加载方式的 API。
- Schema Merging(Schema 合并):支持将多个子 Schema 合并为一个完整的 Schema,便于模块化拆分与团队协作。
- Schema Stitching(Schema 拼接):支持通过配置将多个远程或本地 Schema 拼接为统一的 Gateway Schema,适合微服务架构下的数据聚合场景。
- 文档加载:提供了从文件路径、Glob 模式、HTTP URL 等途径加载 GraphQL 文档(Query、Mutation、Fragment)的能力。
- Mocking(模拟数据):内置 Mock 支持,可快速基于 Schema 生成模拟数据,便于前端开发与测试。
- 工具函数:包含大量辅助函数,如类型查找、字段遍历、Schema 打印与 AST 操作等。
安装
你可以通过 npm 或 yarn 安装 graphql-tools 包:
bash
npm install graphql-tools graphql
或:
bash
yarn add graphql-tools graphql
注意:
graphql作为 peer dependency,需要单独安装。
快速上手
1. 从类型定义创建 Schema
js
import { makeExecutableSchema } from 'graphql-tools';
const typeDefs = `
type Query {
hello: String
}
`;
const resolvers = {
Query: {
hello: () => 'Hello world!',
},
};
const schema = makeExecutableSchema({
typeDefs,
resolvers,
});
2. 加载远程 Schema 并合并
js
import { loadSchema } from '@graphql-tools/load';
import { UrlLoader } from '@graphql-tools/url-loader';
import { mergeSchemas } from '@graphql-tools/schema';
const userSchema = await loadSchema('https://api.example.com/user', {
loaders: [new UrlLoader()],
});
const orderSchema = await loadSchema('https://api.example.com/order', {
loaders: [new UrlLoader()],
});
const gatewaySchema = await mergeSchemas({
schemas: [userSchema, orderSchema],
});
子包模块
GraphQL Tools 采用模块化设计,主要功能拆分到以下子包中,方便按需引入:
| 子包名 | 说明 |
|---|---|
@graphql-tools/schema |
Schema 创建、合并与拼接 |
@graphql-tools/load |
统一 Schema 与文档加载框架 |
@graphql-tools/url-loader |
从 URL 加载 GraphQL Schema |
@graphql-tools/code-file-loader |
从代码文件中提取 Schema |
@graphql-tools/graphql-file-loader |
从 .graphql 文件中加载 Schema |
@graphql-tools/merge |
类型定义与 Schema 合并逻辑 |
@graphql-tools/mock |
Schema Mocking 功能 |
@graphql-tools/stitch |
Schema Stitching 相关能力 |
关联项目与更多信息
- 官方网站:https://graphql-tools.com
- GitHub 仓库:github.com/ardatan/graphql-tools
- npm 包名:
graphql-tools(以及上述各子包)
总结
GraphQL Tools 是 GraphQL 服务端开发中不可或缺的工具集之一,尤其在需要聚合多个数据源、拆分大型 Schema、或快速搭建 GraphQL Gateway 的场景下表现突出。其模块化的子包设计也使得开发者可以按需引入,保持构建体积的可控性。无论是初创项目还是大型微服务架构,GraphQL Tools 都能提供灵活而强大的底层支持。
帮助我们改进文档
发现翻译问题或内容错误?请告诉我们。
