T3 Code 非官方中文翻译不是官方产品,也不是 T3 Tools 官方文档。源提交 d2c25950b4d9英文原文GitHub 源文件
Skip to content

开发容器 ​

面向维护者。正在使用 T3 Code?请参阅 docs/user。

.devcontainer/ 提供一套与 CI 一致、打开即可编码的 Linux 环境:Ubuntu 24.04、Node 26、pnpm、Rust stable、全局的 vp CLI,以及 GitHub CLI。在 VS Code 中打开仓库并选择 “Reopen in Container”,或创建一个 GitHub Codespace。依赖安装(vp i)、Electron 可执行位修复,以及 Vite 依赖缓存预热,都会在你接入之前自动运行。

容器中可用的内容 ​

  • 完整的开发栈:运行 vp run dev,然后通过转发的 Web 端口(5733)打开它打印出的配对 URL。没有配对令牌时,单独的源站毫无用处。在 VS Code 中,转发端口是真正的 localhost,因此打印出的 URL 可以直接使用;在浏览器版 Codespaces 中,转发后的源站不同,如果服务器拒绝它,请通过 T3CODE_DEV_ALLOWED_ORIGINS 传入转发后的源站。
  • Linux CI 作业所运行的全部内容:聚焦的 vp test run <files>、vp lint <files>、各包的类型检查、vp run build:desktop,以及 resource-monitor 的 cargo 构建和测试。(此处的 PATH 上没有 vpr;curl 安装程序只为 vp 提供垫片。安装之后请使用 vp run <script> 或 node_modules/.bin/vpr。)

状态与安全 ​

T3CODE_HOME 指向工作区中被 git 忽略的 .t3,因此全部运行时状态都留在容器工作区之内,与工作树(worktree)的默认方式一致。容器内没有一份正在使用的安装可供破坏,但 AGENTS.md 中的测试数据规则仍然适用:把数据复制进来,绝不要指向共享状态。

缓存 ​

两个命名卷让重新构建保持快速,并把安装移出缓慢的 macOS/Windows 绑定挂载:pnpm 存储(在各个检出之间共享,挂载在 vp i 存放它的位置)以及根目录的 node_modules(按容器隔离;工作区的包只是符号链接进去,因此它覆盖整个 .pnpm 虚拟存储)。删除容器再重建会复用这两者,因此一次重建的 vp i 是数秒,而不是数分钟。主机上看到的 node_modules 是空的;请在容器内运行主机侧的工具。

不在范围内 ​

  • 带窗口的 Electron 开发只能在主机上进行。在容器中构建并验证桌面应用包没有问题(CI 正是这样做的,而且是无界面的);启动应用则需要显示器。
  • 移动端原生构建只能在主机上进行(iOS 用 Xcode,Android 用 Android SDK)。类型检查、lint 和移动端静态检查可以正常运行。
  • vp run dev --share 需要 tailscale 二进制文件和 tailnet;此处未准备。

预构建 ​

从头创建容器会执行完整的 vp i,并安装工具链,因此值得做预构建。Codespaces 预构建在仓库设置中配置,而不是在文件中,并且会原样采用这份配置:重的步骤位于 onCreateCommand 和 updateContentCommand 中,预构建会把它们烘焙进去。把预构建限制在一个区域和一个保留版本;存储按每个区域的每个版本计费。注意,预构建快照不包含这些缓存卷,因此以预构建为主的工作流可能更适合去掉这些挂载。在 Codespaces 之外,Dev Container CLI 可以推送预构建镜像:

bash
devcontainer build --workspace-folder . --push true --image-name <registry>/t3code-devcontainer:latest

非官方译文 · 源提交 d2c25950b4d9 · 不代表 T3 Tools