⚡ 59 个开发者工具,始终保持最新 — 上游每次发布后数小时内即可通过 apt 获取。 加入 Discord

📅 自 起,使用本 apt 镜像将需要订阅。 查看价格 · 🆓 有一个永久免费的镜像

在 Debian 上安装最新版 tree-sitter-cli

在命令行中生成、构建、测试和调试 Tree-sitter 解析器与语法

最新版本:0.27.0 · 更新于 2026-09-15
来源版本
deb.griffo.io0.27.0 ✅
官方 Debian0.22.6 🛑
← 返回首页
📌 要在特定版本上安装? Debian 12 (bookworm) · Debian 13 (trixie) · Debian 14 (forky) · Debian Sid

什么是 tree-sitter-cli?

tree-sitter-cli 是用于开发 Tree-sitter 解析器的命令行工具。Tree-sitter 是一个解析器生成器,也是一个增量解析库:它为源文件构建具体语法树,并在文件编辑时以很小的代价更新这棵树,因此 Neovim、Helix、Zed 和 GitHub 都用它来做语法高亮、代码折叠、文本对象和代码导航。语法就是用这个 CLI 做出来的:它能搭建语法仓库,从 grammar.js 生成 C 解析器,把解析器编译成共享库或 WebAssembly,运行语料测试,对文件进行解析、查询、高亮和标签提取,还能启动一个网页版 playground。它是一个单独的 Rust 二进制文件,你要输入的命令是 tree-sitter。

🚀 为什么最新版本很重要: 语法与 CLI 紧密绑定:当前的解析器 ABI、tree-sitter init 生成的 tree-sitter.json 布局,以及 --js-runtime native 背后的内置 QuickJS 运行时,都出现在官方软件源冻结的版本之后。用新版 CLI 生成的语法仓库,要求每位贡献者的机器和 CI 上都有相同或更新的版本。Debian 稳定版的 0.22.6 和 Ubuntu 24.04 的 0.20.8 早于其中大部分变化,而上游自己的 Linux 二进制需要 glibc 2.39,在 Debian 12 或 Ubuntu 22.04 上根本无法启动。

⚡ tree-sitter-cli 的主要特性

🧱 一条命令建好语法仓库

tree-sitter init 问几个问题,就写好 grammar.js、tree-sitter.json 以及绑定和打包文件,语法从第一天起就能发布给 Node.js、Python、Rust、Go、Swift 和 C 使用。

⚙️ 生成解析器

tree-sitter generate 把 grammar.js 转换成 src/ 下不依赖任何库的 C 解析器,并报告冲突。它用 node 运行语法文件,也可以通过 --js-runtime native 使用内置的 QuickJS 运行时。

🔨 原生与 WebAssembly 构建

tree-sitter build 把解析器编译成编辑器可加载的共享库,--wasm 则生成供 web-tree-sitter 和 playground 使用的 .wasm 模块。

🧪 语料测试

tree-sitter test 解析 test/corpus 下的示例,把语法树与预期的 S 表达式对比,同时运行高亮和标签测试。有意修改之后,用 --update 重写预期结果。

🔍 解析、查询、高亮、标签

parse 打印语法树,query 运行 .scm 查询并列出捕获,highlight 输出到终端或 HTML,tags 提取定义与引用。

🛝 网页 Playground

tree-sitter playground 启动一个本地页面:输入代码,边改边看语法树更新,并对它运行查询,这是弄清某条规则为什么没匹配上的最快办法。

🚀 始终领先于官方软件源: Debian 和 Ubuntu 在发布时冻结软件包版本,而本仓库通常在上游发布后数小时内就发布新版本。一条简单的 apt upgrade 就能让你保持最新。

📦 从 deb.griffo.io 安装

运行命令

第 1 步:添加仓库

sudo install -d -m 0755 /etc/apt/keyrings
curl -fsSL https://deb.griffo.io/EA0F721D231FDD3A0A17B9AC7808B4DD62C41256.asc | sudo gpg --dearmor --yes -o /etc/apt/keyrings/deb.griffo.io.gpg
echo "deb [signed-by=/etc/apt/keyrings/deb.griffo.io.gpg] https://deb.griffo.io/apt $(lsb_release -sc 2>/dev/null) main" | sudo tee /etc/apt/sources.list.d/deb.griffo.io.list > /dev/null
sudo apt update
install -d -m 0755 /etc/apt/keyrings
curl -fsSL https://deb.griffo.io/EA0F721D231FDD3A0A17B9AC7808B4DD62C41256.asc | gpg --dearmor --yes -o /etc/apt/keyrings/deb.griffo.io.gpg
echo "deb [signed-by=/etc/apt/keyrings/deb.griffo.io.gpg] https://deb.griffo.io/apt $(lsb_release -sc 2>/dev/null) main" | tee /etc/apt/sources.list.d/deb.griffo.io.list > /dev/null
apt update
sudo apt install extrepo
sudo extrepo enable griffo
sudo apt update

🆓 有一个永久免费的镜像。 deb-free.griffo.io 永久免费提供软件包 — 无需账号、无需订阅,最多落后上游 2 个月,安全修复立即发布。目前收录 cliamp、Ghostty、lazydocker、Oh My Posh、Uncloud 和 Zed;tree-sitter-cli 不在其中,因此今天只能通过上面的仓库安装 — 提出请求即可将其加入。

免费镜像的工作方式 →

🧩 关于 extrepo 选项。 extrepo 是 Debian 官方用于管理第三方仓库的工具:它会替你写好 sources 文件并安装签名密钥,并在使用前先对照签名元数据校验该密钥。本仓库以 griffo 之名登记其中,永久免费镜像则为 griffo-free,因此在 Debian(bookworm、trixie、forky、sid)上,上面的命令就是全部配置。

extrepo 只负责 sources 文件和密钥,订阅凭据仍然要写入 /etc/apt/auth.conf.d/deb.griffo.io.conf。Ubuntu 不在覆盖范围内,因为 extrepo 只发布 Debian 各套件的元数据:在 Ubuntu 上请使用 sudo 或 root 的命令。

第 2 步:安装 tree-sitter-cli

# 安装最新版 tree-sitter-cli
sudo apt install tree-sitter-cli

# 验证安装,命令是 tree-sitter,不是 tree-sitter-cli
tree-sitter --version
# 安装最新版 tree-sitter-cli
apt install tree-sitter-cli

# 验证安装,命令是 tree-sitter,不是 tree-sitter-cli
tree-sitter --version

第 3 步:创建第一个语法

# 命令是 tree-sitter。构建和测试解析器需要 C 编译器,
# generate 默认用 node 运行 grammar.js,除非你选择内置运行时
sudo apt install build-essential nodejs

# 搭建一个语法仓库,回答几个问题即可
mkdir tree-sitter-mylang && cd tree-sitter-mylang
tree-sitter init

# 生成解析器、编译并运行语料测试
tree-sitter generate
tree-sitter build
tree-sitter test

# bash、zsh、fish 和 nushell 补全都在软件包里
tree-sitter --help
# 命令是 tree-sitter。构建和测试解析器需要 C 编译器,
# generate 默认用 node 运行 grammar.js,除非你选择内置运行时
apt install build-essential nodejs

# 搭建一个语法仓库,回答几个问题即可
mkdir tree-sitter-mylang && cd tree-sitter-mylang
tree-sitter init

# 生成解析器、编译并运行语料测试
tree-sitter generate
tree-sitter build
tree-sitter test

# bash、zsh、fish 和 nushell 补全都在软件包里
tree-sitter --help

🎯 基本用法示例

编写语法:

# 每次修改 grammar.js 后重新生成,用内置 QuickJS,无需 node
tree-sitter generate --js-runtime native

# 只运行名称匹配的测试,然后把新输出接受为预期结果
tree-sitter test --include 'function'
tree-sitter test --update

# 构建共享库,或为 web-tree-sitter 构建 WebAssembly 模块
tree-sitter build -o mylang.so
tree-sitter build --wasm

解析文件:

# 打印一个文件的语法树
tree-sitter parse examples/hello.mylang

# 安静地解析大量文件,并报告成功了多少
tree-sitter parse examples/*.mylang --quiet --stat

# 给一次解析计时,排查语法改动是否拖慢了速度
tree-sitter parse examples/big.mylang --time

查询、高亮与标签:

# 对文件运行查询,列出它捕获的内容
tree-sitter query queries/highlights.scm examples/hello.mylang

# 在终端里高亮文件,或者渲染成独立的 HTML 页面
tree-sitter highlight examples/hello.mylang
tree-sitter highlight --html examples/hello.mylang > hello.html

# 用 tags 查询提取定义与引用
tree-sitter tags examples/hello.mylang

现有语法与 playground:

# 在现有语法上工作
git clone https://github.com/tree-sitter/tree-sitter-json
cd tree-sitter-json
tree-sitter generate && tree-sitter test

# 写一个配置文件,然后在 parser-directories 中列出你的语法检出目录
tree-sitter init-config

# 编译为 WebAssembly,并在浏览器中打开交互式 playground
tree-sitter build --wasm
tree-sitter playground

🔧 工具集成

Tree-sitter CLI 位于语法和加载语法的工具之间:

  • Neovim:nvim-treesitter 的 main 分支用 tree-sitter CLI 编译解析器,并要求较新的版本,比 Debian 稳定版或 Ubuntu LTS 自带的更新
  • Helix:高亮、缩进和文本对象都是 Tree-sitter 查询;修改 highlights.scm 后先用 tree-sitter query 检查,再用 hx --grammar build 重新构建语法
  • Zed:语言扩展会固定语法仓库和提交,所以在更新固定版本之前,先在本地生成并测试语法
  • CI:先 tree-sitter generate 再 git diff --exit-code src/,已提交解析器过期的 pull request 就会失败
  • 包仓库:tree-sitter init 写好的绑定让同一个语法可以发布到 npm、PyPI 和 crates.io

🚀 为什么选择 deb.griffo.io?

📊 仓库对比:
  • 官方 Debian:收录了 tree-sitter-cli,但 Debian 13 只有 0.22.6,早于当前语法使用的解析器 ABI 和 tree-sitter.json 布局,Debian 12 则根本没有这个包
  • 上游二进制:是最新的,但上游预编译的 Linux 二进制链接的是 glibc 2.39,在 Debian 12 或 Ubuntu 22.04 上无法启动,而且放在 apt 管理之外的 /usr/local/bin
  • cargo 或 npm:cargo install tree-sitter-cli 需要 Rust 工具链,每次升级都要完整编译一遍;npm 包下载的是同一个预编译二进制,glibc 要求也一样
  • deb.griffo.io:最新版本,自动更新

📦 软件包构建仓库

Debian 软件包在这个 GitHub 仓库中自动构建和维护:

🔗 相关软件包

deb.griffo.io 同样提供:

🎯 特别适合: 为新语言编写语法、让现有语法的解析器和语料测试保持最新、为 Neovim、Helix 或 Zed 测试高亮和注入查询、在 CI 中检查已提交的解析器是否最新,以及在上游二进制无法启动的 Debian 12 或 Ubuntu 22.04 机器上工作。

📦 本仓库最近发布

❓ 常见问题

tree-sitter-cli 在官方 Debian 软件源中吗?

在,但官方 Debian 源只提供 tree-sitter-cli 0.22.6,而本仓库提供 tree-sitter-cli 0.27.0,每次上游发布后数小时内重新构建。

如何在 Debian 上安装最新版 tree-sitter-cli?

按上方说明一次性添加 deb.griffo.io 仓库,然后运行:sudo apt install tree-sitter-cli。之后通过常规的 sudo apt upgrade 获取新版本。

软件包是否有签名?如何构建?

每个软件包都使用仓库的 GPG 密钥(EA0F721D231FDD3A0A17B9AC7808B4DD62C41256)签名,并基于上游发布在公开的 GitHub 仓库中构建,任何人都可以审查。

支持哪些 Debian 版本?

Debian 12 Bookworm、Debian 13 Trixie、Forky 和 Sid。