简介
GritQL 是一套“像写代码片段一样写规则”的声明式查询语言 + CLI,可在大仓库里可重复地搜索与重写代码,并把迁移输出为可审查、可回滚的 diff,适合团队长期维护 codemod 与迁移规则库。
- 适合谁: 需要反复做迁移(日志替换、API 改名、批量修复)且仓库规模很大的团队
- 可搭配: 多语言仓库(TS/Python/Go 等)、CI codemod、基于分支的 code review
- 准备时间: 5 分钟
实战建议
- 面向大仓库:README 提到可扩展到 10M+ 行代码级别
- 可复用规则:内置模块系统并提供 200+ 标准 patterns(README)
适合 Agent 的“批量改代码”闭环
在 Agent 编码场景里,最容易出问题的是:同一种改法在不同文件里不一致,导致 review 很痛苦。
GritQL 的关键价值在于把改动变成声明式规则:
- 先用“只搜索不改写”的模式摸清影响面;
- 再加上
=>规则做重写; - 先在小目录试跑,再扩大到全仓;
- 最后像正常迁移一样走测试、lint 和 code review。
README 给了一个典型例子:
grit apply '`console.log($msg)` => `winston.log($msg)`'如果仓库很大,把它当成 CI 批处理任务更稳:一次生成可审查 diff,然后把规则沉淀为以后可复用的 codemod。
FAQ
一定要懂 AST 吗? 答:不需要,README 强调“像写代码片段一样”的模式也能作为查询。
只能改 JavaScript 吗? 答:不是,它支持多种目标语言(TS/Python/Go 等),以官方支持矩阵为准。
怎么保证安全? 答:在分支里跑、先小后大、最后用测试与 code review 把关。