GraphQL 模式注册表
将以下提示词粘贴到你的 AI 对话框中:
请根据 https://skillhub.cn/install/skillhub.md,安装 @user_3c6cb52e/graphql-schema-registry 到当前 AI 助手。
技能介绍
在多人协作或持续集成环境里,GraphQL schema 的变更往往悄无声息地发生:有人给字段换了个类型,有人删掉了原本公开的枚举值,直到客户端运行时报错,问题才浮出水面。这个技能要解决的正是这类破坏性变更无法提前发现、多服务组合缺乏一致性、团队内部约定难以用代码约束的问题。
核心能力
技能围绕三块能力展开:
- 破坏性变更检测:通过
graphql-inspector对比新旧两份 schema,识别可能让现有客户端失败的改动,例如删除字段、收紧可空性或修改默认值。 - 模式组合:借助
Apollo Rover CLI把分散在多个服务中的 schema 组合成单一视图,确保网关层看到的类型定义与各自服务保持同步。 - 规则校验:利用
@graphql-eslint/eslint-plugin编写团队自己的 ESLint 规则,在 CI 阶段拦截不符合内部约定的写法,比如禁止新增未文档化的字段。
工作方式
- 从 CI 或本地提交中获取当前 schema 快照,作为对比基准。
- 运行
graphql-inspector将新 schema 与基准进行比对,输出破坏性变更列表。 - 需要合并多源时,用 Apollo Rover CLI 拉取并组合各服务的 schema 定义。
- 对最终 schema 执行 ESLint 校验,确保通过全部自定义规则。
适用边界
这套方案依赖 graphql 包作为底层依赖,技能文档中给出的安装路径均围绕该库展开。需要注意的是,GraphQL.js 本身是通用库,可以同时运行在 CommonJS 和 ESModule 环境里,你必须保证项目中 require() 与 import 的解析配置正确。
此外,破坏性检测的准确性取决于对比所用的历史快照是否可靠,如果基准 schema 本身已经过时,检测结果也会失真。对于完全未版本化的 schema 仓库,这套机制能提供的基础保障有限。
使用场景
- 团队合并多个GraphQL服务的schema时,用Apollo Rover CLI生成统一视图,确保网关层类型一致。
- 在CI流水线中对比新旧schema快照,用graphql-inspector拦截删除字段或收紧可空性的破坏性变更,避免客户端上线后报错。
- 为团队GraphQL书写约定编写ESLint规则,在提交阶段自动拦截未文档化字段的新增,代替人工代码评审。
适合人员
- 后端工程师:想在合并GraphQL schema前自动发现删除字段、收紧可空性等破坏性变更,防止客户端线上报错。
- 平台架构师:管理多个GraphQL服务的组合视图,希望网关层与各服务的类型定义始终保持同步。
- 技术负责人:想用自定义ESLint规则把团队的GraphQL书写约定固化下来,减少人工评审成本。