跳转到正文

开发

要求

  • Bun 用于工作区安装和脚本
  • Node.js 20+
  • tmux 和 cloudflared 用于端到端测试
  • Daytona API 密钥 + git 凭据 用于沙盒集成测试(可选)
  • Playwright 用于 UI 端到端测试

安装

命令行
bun install

运行应用

命令行
bun run dev:beam

此命令会构建 CLI,在端口 8787 上启动本地服务器(可通过 TERMBRIDGE_DEV_PORT 覆盖),使用 tmux 会话 codex(可通过 TERMBRIDGE_DEV_SESSION 覆盖),并启动 Vite 开发 UI,将 /__tb(包括 WebSockets)代理到该服务器。它会打印一个开发兑换 URL,供你在浏览器中打开。设置 TERMBRIDGE_SKIP_BUILD=1 可跳过 CLI 构建。

多个会话

命令行
TERMBRIDGE_SESSIONS=2 bun run dev:beam

也可以使用快捷方式:

命令行
bun run dev:beam:multi

dev:beam 会在你未自行设置时设置 TERMBRIDGE_INSECURE_COOKIE=1,因此会话 Cookie 可通过普通 HTTP 使用。直接运行 CLI 且不使用 HTTPS 时,请显式设置它:

命令行
TERMBRIDGE_INSECURE_COOKIE=1 node cli/dist/bin.js --no-tunnel --public-url http://127.0.0.1:8080 --port 8080

测试

命令行
bun run test
  • test:mocked 使用 100% 覆盖率运行单元测试和集成测试。
  • test:cli 运行真实的 CLI + UI 端到端测试(tmux + cloudflared + Playwright)。
  • test:cli 中的 Daytona 沙盒测试只会从本仓库旁边 termbridge-test-app 目录中的 .env 文件读取设置(../termbridge-test-app/.env)。仅当该文件设置了 TERMBRIDGE_E2E_DAYTONA=1 和 TERMBRIDGE_DAYTONA_API_KEY 时才会运行。请在那里将 TERMBRIDGE_SANDBOX_REPO 设置为你可以克隆的仓库;默认测试仓库是私有仓库,还需要 TERMBRIDGE_SANDBOX_GIT_USERNAME 和 TERMBRIDGE_SANDBOX_GIT_TOKEN。

文档

文档是存放在 docs/ 中的纯 Markdown 文件,每个页面都带有 frontmatter,并使用 meta.json 文件指定导航顺序。文档发布于 termbridge.dev。使用以下命令进行验证:

命令行
node scripts/check-docs-content.mjs --root docs --expected-docs 16 --expected-nav 3

对于涉及 docs/ 的拉取请求,文档内容工作流会运行相同的检查。