在 docs.grit.io 上从哪里开始学习 GritQL

更新时间

想系统学 GritQL,最省力的路径是:先看 Overview 建立概念,再跟着 Interactive Tutorial 动手,然后用 CLI Quickstart 把 Grit 装到本地跑通第一条查询,遇到语法细节再查 Language Reference。这套顺序适合第一次接触 GritQL、想尽快把“搜索并改写代码”跑起来的人;如果你只想查某个语法点,直接跳到 Language Reference 即可。

各入口分别解决什么问题

docs.grit.io 的文档导航里,与入门直接相关的有四个入口,职责并不重叠:

入口 作用 适合什么时候看
Getting Started / Overview 说明 GritQL 是什么、为什么用它 第一次接触,想判断是否值得投入
Interactive Tutorial 分步教程,边学边练 已经决定要学,需要动手路径
CLI Quickstart 安装并使用 Grit CLI 想在本机或仓库里实际执行查询
Language Reference 完整的 GritQL 语言文档 写模式时查语法、条件、修饰符

此外导航中还有 Pattern Library、Config、Testing、Guides(如 Continuous Integration、Authoring GritQL、Imports、VS Code、Sharing Patterns)等页面,属于进阶内容,建议在跑通第一条查询之后再看。

先理解 GritQL 的核心机制

GritQL 是一种声明式的代码搜索与改写语言。它的关键设计是:任何代码片段本身就是一条合法的 GritQL 查询,不需要先掌握 AST 细节。配合反引号和元变量(如 $msg),就能表达“找到什么、改成什么”。

官方 Quick Example 给出的写法是:

grit apply '`console.log($msg)` => `winston.log($msg)`'

这条查询的含义是:匹配所有 console.log(...) 调用,把日志函数替换为 winston.log(...),括号内的参数通过元变量 $msg 原样保留。左边是匹配模式,=> 右边是改写结果。

同一页面还展示了如何把模式保存为自定义 lint,并用 where 子句排除特定情况:

`console.log($msg)` => `winston.log($msg)` where {
  $msg <: not within or { `it($_, $_)`, `test($_, $_)` }
}

这里的 where 表示附加约束:当 $msg 出现在 it(...) 或 test(...) 调用内部时不改写。这正是 GritQL 从“简单替换”走向“可控重构”的地方——先写匹配和替换,再用条件收窄范围。

按目标选择学习路线

目标一:先判断要不要用

看 Overview 的 “Why GritQL?” 部分。文档给出的定位包括:无需学习 AST 细节即可上手;借助 Rust 和查询优化可扩展到千万行级仓库;通过内置模块系统复用 200+ 标准模式或分享自己的模式;支持 JavaScript/TypeScript、Python、JSON、Java、Terraform、Solidity、CSS、Markdown、YAML、Rust、Go、SQL 等多种语言;内置 auto-fix,便于快速修复。

文档列出的典型场景是:大规模迁移(跨百万行迁移 API、框架或重构代码库)、自定义 lint(落实团队规范)、代码质量改进、依赖升级时处理破坏性变更。对照你的任务属于哪一类,就能判断投入是否划算。

目标二:动手学会写模式

进入 Interactive Tutorial 按步骤练习。练习时建议始终围绕一个真实小任务,例如“把项目里的 console.log 换成统一日志库”,这样每学一个语法点都能立刻验证效果。

目标三:在本地或仓库里执行

看 CLI Quickstart,按文档安装并使用 Grit CLI,然后运行上面那条 grit apply 查询。验证方法是:在测试仓库里放一个含 console.log 的文件,执行后确认输出被替换;再把它放进 it(...) 内部,确认 where 条件生效、未被改写。常见卡点是模式里的反引号和元变量书写不正确,以及改写范围超出预期——先用小范围文件试跑,再扩大。

目标四:查语法细节

写模式过程中遇到条件、模式修饰符、作用域(Bubble and Scoping)、函数、常见惯用法等问题,查 Language Reference 下对应的 Pattern、Conditions、Pattern Modifiers、Functions、Common Idioms 等页面。Testing GritQL 页面则适合在把模式沉淀为团队规范前做验证。

入门之后可以看什么

跑通基本查询后,Config 用于配置,Pattern Library 用于查找可复用模式,Sharing Patterns 与 Imports 涉及模式共享和导入,VS Code 页面介绍编辑器集成,Guides 下的 Continuous Integration 则说明如何把检查接入流水线。这些都属于“已经会用”之后的效率提升,不必在第一天全部读完。