@cloud2303/fast-update-cli
v0.1.4
Published
Expo / React Native update packaging and release CLI
Readme
Fast Update CLI
用于 Expo / React Native 项目的原生安装包上传与 Bundle 更新发布。要求 Node.js 24+,Bundle 打包需要项目使用 Hermes。
安装
npm install -g @cloud2303/fast-update-cli
rfu --version登录
在任意目录执行:
rfu login登录完成后直接结束。rfu status 查看当前账号,rfu logout 退出登录。
登录保存账号会话,后台地址以当前命令的 --server 或 CLI 默认地址为准;使用其他后台时,status/logout 也要指定相同地址。登录不会修改项目的后台地址或应用凭据。
使用自建后台时,账号命令通过 --server 指定地址:
rfu login --server https://updates.example.com/
rfu status --server https://updates.example.com/
rfu logout --server https://updates.example.com/关联应用
在 App 项目目录执行:
rfu app use按提示选择平台及已有应用,或创建新应用。rfu app refresh 更新已关联应用的凭据。
应用关联和上传使用项目的 react-fast-update.config.json。使用自建后台时,先将该文件的 server 设为对应地址:
{
"schemaVersion": 1,
"server": "https://updates.example.com/",
"apps": {}
}切换到独立的新后台数据库时,需要重新关联各平台应用。旧后台的 App ID 和 Secret 不能直接用于新后台;两端项目应重新关联 Android 和 iOS,避免保留另一端的旧凭据。
上传安装包
rfu apk upload ./app.apk
rfu apk upload ./app.ipa先用项目的原生构建工具生成安装包,再上传到更新服务。安装包需要包含对应的更新渠道配置;上传 Android APK 需要安装 Android SDK Build Tools 和 Java。
发布 Bundle
rfu bundle release按提示选择平台、目标原生版本和发布渠道。也可以指定平台:
rfu bundle release --platform android
rfu bundle release --platform ios
rfu bundle release --platform all打包使用 App 项目当前的环境配置,选择渠道不会切换环境文件。
发布使用后台已登记的 APK / IPA 包名,不读取或比对 Expo 配置中的包名。先上传目标基座的安装包,再发布 RN 更新;同一平台的生产版和预览版可以使用不同包名、共用 App ID 和兼容的更新包。所选基座有多个包名时,CLI 按稳定顺序选取一个作为清单元数据,更新目标仍由基座版本和渠道决定。
更新说明可在交互中填写,直接回车可跳过,也可以使用参数:
rfu bundle release --description "修复连接问题,优化操作体验"bundle upload 同样支持 --description。上传后也可以在后台“更新包 → 详情 → 更新说明”中修改;说明显示在客户端更新弹窗中,留空时使用默认提示。
查看帮助
rfu --help
rfu app --help
rfu apk upload --help
rfu bundle release --help选择单包或多分包
react-fast-update.config.json 的每个平台 app 中增加 bundleMode,默认 single:
{
"schemaVersion": 1,
"server": "https://updates.example.com/",
"apps": {
"android": {
"appId": "你的 App ID",
"secret": "仅供 CLI 上传的 Secret",
"bundleMode": "split"
}
}
}single 使用 Expo 导出一个入口;split 调用项目安装的 @native-routes/tooling 构建 NativeRoutes 的 main/shared/业务 HBC 和资源。两种模式都上传完整清单 v4 的一个 ZIP,后台生成文件差分。客户端插件必须使用相同模式。
分包 ZIP 的 main.bundle 位于包根目录,资源保留 RN 生成的相对路径。构建目录外层的 iOS assets/、Android res/ 仅用于存放产物,不再额外添加到 ZIP 路径中;iOS 资源自身已有的 assets/ 前缀照常保留。
多分包始终在下次冷启动启用整个版本。回退时用旧源码重新发布,或重新绑定保留的旧更新包;新的发布序号使设备能够接收旧内容。已加载的引擎继续使用启动时选定的版本。
