sublime text 需配合 graphql 插件、lsp-graphql 和自定义构建系统,才能实现语法高亮、字段补全和一键请求调试;关键在于正确配置文件绑定、graphql.config.yml 路径、启用 jsx 支持及手动重启 lsp 服务。

Sublime Text 本身不发送请求、不执行查询,但配合正确插件和配置,它能成为 GraphQL 接口调试中最轻快的“草稿台”——关键在于把写、验、查三步链路打通,而不是指望它替代 GraphiQL。
怎么让 .graphql 文件真正高亮并支持字段提示
高亮失效 ≠ 插件没装,大概率是文件没绑对语法或内联模板未启用。状态栏显示 Plain Text 就说明还没生效。
- 必须安装
GraphQL插件(作者princjef),旧版joshbuddy的已停止维护,对@defer、@stream等新语法不识别 - 装完重启 Sublime,再打开任意
schema.graphql,点击右下角语言名 →Open all with current extension as…→ 选GraphQL - 若在 JS/TS 里写
gql`{ user { id } }`模板字符串仍无高亮,需在 Sublime 用户设置中加一行:"enable_jsx_graphql": true - 高亮生效后,
#注释、type、query、花括号、字段名应有明显颜色区分;否则补全和校验都不可靠
为什么 LSP-graphql 补全总是不工作
LSP-graphql 不是装上就自动补全,它依赖 graphql.config.yml 中的 schemaPath 能被准确读取,且服务必须手动启用。
- 先确认已安装
LSP和LSP-graphql(顺序不能反:LSP 是底层框架) - 在项目根目录建
graphql.config.yml,内容至少含:schema: ./schema.graphql——路径必须是相对当前工作目录的可读路径,不能用~或环境变量 - 打开命令面板(
Ctrl+Shift+P),运行LSP: Enable Language Server Globally,勾选graphql - 改完配置或更新了
schema.graphql后,必须手动执行LSP: Restart Servers,否则补全不会刷新 - 补全触发条件:在
{后敲空格或Ctrl+Space,不是所有位置都自动弹出;字段名补全只在合法上下文(如 query body 内)生效
如何在 Sublime 里直接发 GraphQL 请求并看响应
不用切窗口、不复制粘贴,靠构建系统 + curl 实现一键查询,适合快速验证字段变更或 resolver 行为。
- 新建构建系统:
Tools → Build System → New Build System,填入:
{
"shell_cmd": "curl -X POST -H 'Content-Type: application/json' --data '{\"query\":\"${file_content}\",\"variables\":{}}' http://localhost:4000/graphql",
"working_dir": "$file_path",
"selector": "source.graphql"
}
- 保存为
GraphQL Request.sublime-build,然后在.graphql文件里按Ctrl+B即可发送 - 注意:请求体里的换行和引号会被 shell 解析,复杂变量建议先用
JSON.stringify格式化再粘贴;生产环境务必删掉该构建系统,避免误发 - 响应会输出在 Sublime 控制台(
Ctrl+`),若返回errors数组,直接搜索"message"定位问题字段
调试跨子图查询失败时,Sublime 能帮你定位什么
联合查询(Federation)报错如 "field not found in subgraph" 或 "@key directive missing",Sublime 不执行请求,但它能快速暴露 schema 定义矛盾点。
- 打开各子图的
subgraph.graphql,用 SideBarEnhancements 插件右键 →Diff with Clipboard对比@key字段是否一致 - 检查每个子图 schema 是否包含
_service { sdl }字段(Federation 强制要求),漏写会导致rover subgraph check直接失败 - 在终端运行
npx @apollo/rover subgraph check --name=products --schema=./products/subgraph.graphql,错误输出会提到具体 SDL 行号,Sublime 可直接跳转 - 别在 Sublime 里手动拼接联合 schema —— 用
rover graph compose生成federated-schema.graphql并设为只读,作为权威参考
真正容易被忽略的是:LSP-graphql 的校验只作用于当前打开的文件,不会跨文件检查 @provides 引用的字段是否真实存在;这类逻辑一致性必须靠 rover 工具链保障,不能依赖编辑器视觉反馈。











