开源 · CLI · 为 Expo & React Native 团队打造
storepulse 把你管理的所有 iOS·Android 应用的发布状态 —— 版本、审核状态、 灰度比例、测试轨道 —— 汇总到一块终端看板上。从设计上就是只读的, 商店凭据永远不会离开你的电脑。
$ storepulse · one board, both stores APP OS PRODUCTION BETA / TESTFLIGHT INTERNAL ───────────────────────────────────────────────────────────────────────────────────────────── Aurora [prod] iOS 2.4.1 LIVE · 2.5.0 REVIEW 2.5.0 LIVE (108) — Android 2.4.1 50% (241) 2.5.0 LIVE (250) 2.5.1 draft (251) Aurora Dev [dev] iOS — 2.6.0 LIVE (12) — Android — — 2.6.0 LIVE (12) Borealis [prod] iOS 1.9.2 LIVE · 1.9.3 REJECTED 1.9.3 LIVE (87) — Android 1.9.2 LIVE (192) 1.10.0 LIVE (200) —
为什么
设计即只读
storepulse 不会提交、不会推进、也不会中止任何东西。它只问两家商店 一个问题 ——"我的发布现在处于什么状态?"—— 然后把答案画出来。 没有什么可弄坏的,也没有什么可担心的。
凭据只留在本地
请求从你的电脑直达 Apple 和 Google。没有服务器,没有账号,
没有遥测。密钥只存在于一开始就被 git 忽略的 .env 里。
首先是一个库
核心是一个通过注入凭据来使用的库,CLI 和 Web 看板只是它最早的 两个界面。接下来是消息通知 —— 同一个引擎,更多画面。 实现两个方法,就能接入你自己的数据源。
功能
production / beta / internal)
× 状态(live, in-review, rollout, rejected…)。
2.4.1 50% 意味着一半用户已经拿到了新版本。
2.4.1 LIVE · 2.5.0 REVIEW 并排呈现 ——
这个在两个控制台里都得翻半天才能确认的"中间时刻"。
npx storepulse demo 一条命令,就能用示例数据渲染出
完整看板 —— 一个 API 密钥都不用创建,先试试合不合适。
storepulse serve 在浏览器中打开自动刷新的看板。可选分组
一次只显示一个;配置中没有分组时会隐藏选择器。每张应用卡片分开显示
iOS 和 Android 行,并把最新包放在发布渠道旁。展开行可以看到发布说明和
TestFlight 到期倒计时,OS 标签可筛选平台行。默认只绑定
127.0.0.1。storepulse snapshot 则把看板导出成 JSON。
latestTesterUrl,或按 versionCode 登记 provider 实际返回的
installLinks。storepulse 从不猜测下载 URL,安装旧构建可能
需要卸载当前应用时也会提前警告。
EAS_TOKEN 和每个应用的
easProjectId,商店里的每个版本就能关联到产出它的
EAS 构建:git 提交、构建配置文件、提交状态,一个不少。
storepulse check --fail-on rejected,halted 把商店状态
变成 CI 判定。退出码可区分正常、策略违规和采集错误,
--format json 可直接接入自动化。
快速上手
$ npx storepulse demo
不用克隆、不用安装 —— 有 Node.js ≥ 20.12 就够了。更喜欢浏览器?
npx storepulse serve --demo 会把同一块看板开在
127.0.0.1:4780。
应用写进 storepulse.config.json,密钥放进
.env(一个 App Store Connect API 密钥 + 一个 Play
服务账号 —— 都是 5 分钟搞定的一次性配置)。
$ npx storepulse init # 生成两个文件 —— 然后填好即可
路线图