storepulse_

开源 · CLI · 为 Expo & React Native 团队打造

哪个版本已经上线?
哪个卡在审核?
一条命令,两大商店。

storepulse 把你管理的所有 iOS·Android 应用的发布状态 —— 版本、审核状态、 灰度比例、测试轨道 —— 汇总到一块终端看板上。从设计上就是只读的, 商店凭据永远不会离开你的电脑。

~/work — zsh
$ 

  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 看板只是它最早的 两个界面。接下来是消息通知 —— 同一个引擎,更多画面。 实现两个方法,就能接入你自己的数据源。

功能

两个控制台展示的一切,尽在一张表里

归一化模型
把 App Store 的状态和 Play 的轨道翻译成同一套词汇: 渠道(production / beta / internal) × 状态(live, in-review, rollout, rejected…)。
灰度追踪
iOS 的分阶段发布和 Android 的分阶段推出,都直接显示成百分比 —— 2.4.1 50% 意味着一半用户已经拿到了新版本。
审核状态可见
2.4.1 LIVE · 2.5.0 REVIEW 并排呈现 —— 这个在两个控制台里都得翻半天才能确认的"中间时刻"。
稳健的看板
某个凭据过期了,错误只会出现在它自己那一行 —— 绝不会让整块看板开天窗。
演示模式
npx storepulse demo 一条命令,就能用示例数据渲染出 完整看板 —— 一个 API 密钥都不用创建,先试试合不合适。
Web 看板
storepulse serve 在浏览器中打开自动刷新的看板。可选分组 一次只显示一个;配置中没有分组时会隐藏选择器。每张应用卡片分开显示 iOS 和 Android 行,并把最新包放在发布渠道旁。展开行可以看到发布说明和 TestFlight 到期倒计时,OS 标签可筛选平台行。默认只绑定 127.0.0.1。storepulse snapshot 则把看板导出成 JSON。
Android 安装目录
独立的安装页面同时展示 Production 与 Development。可配置固定的 latestTesterUrl,或按 versionCode 登记 provider 实际返回的 installLinks。storepulse 从不猜测下载 URL,安装旧构建可能 需要卸载当前应用时也会提前警告。
Expo 友好
任何 iOS/Android 应用都能用,但它出自一个 Expo 团队之手, 也为 Expo 团队而写 —— 配好 EAS_TOKEN 和每个应用的 easProjectId,商店里的每个版本就能关联到产出它的 EAS 构建:git 提交、构建配置文件、提交状态,一个不少。
CI 策略门槛
storepulse check --fail-on rejected,halted 把商店状态 变成 CI 判定。退出码可区分正常、策略违规和采集错误, --format json 可直接接入自动化。

快速上手

从零到你的真实看板,大约 15 分钟

1

先跑演示 —— 不需要任何凭据

$ npx storepulse demo

不用克隆、不用安装 —— 有 Node.js ≥ 20.12 就够了。更喜欢浏览器? npx storepulse serve --demo 会把同一块看板开在 127.0.0.1:4780。

2

列出应用,填入密钥

应用写进 storepulse.config.json,密钥放进 .env(一个 App Store Connect API 密钥 + 一个 Play 服务账号 —— 都是 5 分钟搞定的一次性配置)。

$ npx storepulse init  # 生成两个文件 —— 然后填好即可
3

运行

$ npx storepulse

你的真实看板就出现了。 完整分步教程 →

路线图

接下来要做的

核心 + 连接器 带演示模式的 CLI EAS 连接器 Web 看板 npx storepulse CLI 英文·韩文输出 快照 diff CI 策略门槛 Android 安装目录 官方 GitHub Action generic webhook 事件 本地 watch 模式