Sublime Text 正确支持 GraphQL 需三要素联动:GraphQL 插件 + JsPrettier + 显式配置 --parser graphql;需手动绑定 .graphql/.gql 文件语法、启用 enable_jsx_graphql、设置 prettier_cli_path 及 inline 支持。

Sublime Text 默认完全不识别 GraphQL,装插件 ≠ 高亮生效,更 ≠ 能格式化。真正起作用的,是 GraphQL(作者 princjef)插件 + JsPrettier + 正确的 parser 配置三者联动。漏掉任一环,.graphql 文件还是白底黑字,JS 里的 gql 模板字符串照样不着色。
为什么 .graphql 文件打开还是纯白文本?
这不是插件没装,而是文件扩展名没和语法定义绑定。Sublime 不会自动把 .graphql 或 .gql 关联到 GraphQL 语法——这是必须手动补的操作。
- 打开任意一个
schema.graphql文件 - 点击右下角状态栏显示的语言名(大概率是
Plain Text) - 选
Open all with current extension as…→ 再选GraphQL - 如果项目里混用
.gql,对.gql文件重复一次该操作 - 确认状态栏显示
GraphQL,且# 注释、query、type等关键字有颜色区分,才算真正生效
JS/TS 里的 gql 模板字符串怎么高亮?
默认情况下,Sublime 只解析独立文件,JS 中的模板字符串被当作普通字符串处理。要让它识别,得靠插件的 JSX 上下文支持,且写法必须规范。
- 打开
Preferences → Package Settings → GraphQL → Settings - 确保用户设置里有
"enable_jsx_graphql": true -
gql`query { user { id } }`这种直接调用能触发高亮;但const q = gql``中若gql是局部变量或重命名导入(如import { graphql as gql }),插件无法推断,大概率不生效 - 临时救急:在模板字符串前加
/* GraphQL */注释,部分版本会据此强制启用解析
怎么一键格式化 GraphQL 查询语句?
Sublime 原生不支持 GraphQL 格式化,必须靠 JsPrettier 调用 prettier CLI,并明确指定 --parser graphql。漏掉这个参数,Prettier 就按 JS 解析,结果会错乱。
- 确保已全局安装 Prettier:
npm install -g prettier,并确认prettier在终端可执行 - 在
JsPrettier → Settings – User中添加:{ "auto_format_on_save": true, "custom_file_extensions": ["graphql", "gql", "js", "ts"], "prettier_cli_path": "/usr/local/bin/prettier", "additional_cli_args": { "--parser": "graphql" } } - 对 JS/TS 中内联查询生效,还需加:
"allow_inline_formatting": true和"inline_script_js_tag_name": ["gql", "graphql"] - 格式化快捷键仍是
Ctrl+Alt+F(Windows/Linux)或Cmd+Alt+F(macOS),但光标必须落在模板字符串内部才触发
格式化后字段顺序变了,是 bug 吗?
不是 bug,是 Prettier 的默认行为。它不保证字段顺序不变,尤其在嵌套对象或 fragment 多层展开时。如果你依赖字段顺序(比如测试快照比对),就得关掉自动格式化,或改用 graphql-format 这类专注 GraphQL 的专用 formatter。
真正容易被忽略的是:Prettier 的 --parser graphql 必须显式传入,且 prettier_cli_path 必须指向真实可执行路径——很多失败案例,其实是 Sublime 调用了错误 Python 环境下的 Prettier,静默失败,没有任何报错提示。


















