零配置发现
遍历目录树,识别包管理器,映射依赖。没有 orbit.json,直到你真正需要。
orbit init
v0.9.2 — 稳到可以甩锅
一个二进制。没有 YAML 考古。orbit 发现包、串联 workspace, 并交付正确产物——让你不用再盯着脚本当保姆。
curl -fsSL https://get.orbit.sh | sh
or npm i -g @orbit/cli · brew install orbit
$ orbit init → 扫描工作区… ✓ found 12 个包 in 84ms ✓ 依赖图已解析 · 3 个应用, 9 个库 ✓ wrote orbit.lock (零配置) $ orbit ship --filter web → 构建受影响图… ✓ cached 7/9 任务 · 节省 +2 分钟 ✓ @acme/web → dist/ 就绪 ◆ 11.4 秒交付 $ █
// 功能
为已经撑破胶带式 Makefile 的 monorepo 而生。
遍历目录树,识别包管理器,映射依赖。没有 orbit.json,直到你真正需要。
orbit init
只交付变更。内容哈希缓存让第二次运行无聊地快。
orbit ship --since main
Node、Go、Python、Rust——同一套 CLI 界面。Workspace 用起来像一个产品。
orbit graph --json
Dry-run、锁文件完整性校验与显式过滤。凌晨两点不会意外部署。
orbit ship --dry-run
一等公民级 GitHub Actions、远程缓存,以及名副其实的退出码。
orbit ci --remote-cache
每个 flag 都带示例。帮助文本就是教程。
orbit --help
// 示例
init → ship → deploy。完整生命周期装进肌肉记忆。
# 从现有仓库引导 monorepo
$ orbit init --yes
→ 扫描工作区…
✓ 包管理器:pnpm, cargo
✓ 发现 12 个包(3 应用 · 9 库)
✓ 已生成 orbit.lock
✓ 远程缓存:关闭(运行 `orbit auth` 启用)
完成。试试:orbit ship --dry-run
# 仅构建并打包自 main 以来的变更
$ orbit ship --filter web --since main
→ 计算受影响图…
@acme/ui ........ cached
@acme/api ....... rebuild (2 files)
@acme/web ....... rebuild (depends on api)
✓ 7/9 任务缓存命中 · 墙钟 11.4s(节省约 2 分钟)
✓ 产物 → dist/web/
可交付。orbit deploy --env staging
# 用显式门禁发布交付产物
$ orbit deploy --env prod --confirm
→ 目标:prod (us-east-1)
→ 产物:dist/web@sha256:a1f3…9c
→ 检查:健康、迁移、金丝雀
✓ 金丝雀 5% · p99 42ms · 错误 0.01%
✓ 提升全量流量…
◆ 48 秒部署 @acme/web@1.4.2
回滚:orbit deploy --env prod --to previous
// 对比
That scripts/ 那个 scripts/ 文件夹本是临时方案——在 2019 年。
| 能力 | 自制脚本 | orbit | | ------------------ | ------------------------------ | ------------------------------ | | 搭建时间 | 几天胶水代码 | 几分钟 — 零配置 | | 受影响构建 | 手动路径过滤 | 自动依赖图 + 哈希 | | 缓存 | 临时文件夹 | 本地 + 远程键 | | 跨语言 | 每种栈一套脚本 | 统一 CLI 界面 | | CI 集成 | YAML 考古 | 一等公民 Actions | | 上手 | "问 Dave" | orbit --help | | 部署安全 | 祈祷 + Slack | Dry-run、确认、回滚 |