📦 Rn Bundle To GithubReact — Rn Bundle 到 GitHub

v1.0.0

Native bundle 发布到 GitHub 的完整工作流。当需要为 React Native 项目打包并发布到 GitHub Release 时激活。包括:(1) 初始化 RN 项目发布配置,(2) 使用 publish.sh 自动发布 release/debug 版本,(3) 生成包含 And...

15· 15·0 当前·0 累计
下载技能包
最后更新
2026/4/20
0
安全扫描
VirusTotal
可疑
查看报告
OpenClaw
可疑
medium confidence
该技能的说明与其既定用途(将 RN 包发布到 GitHub)一致,但遗漏了声明的凭据要求,并指示下载并执行外部 publish.sh 脚本,同时将 GitHub token 存储于主目录——这些行为虽符合任务逻辑,却存在明显安全风险,使用前需人工审查。
评估建议
该技能看似能完成它声称的工作(构建并发布 React Native bundle),但有两个明显风险:(1) 它让你从第三方 GitHub 仓库下载并执行远程 publish.sh,却不提供脚本内容供检查;(2) 它要求将 repo-scoped GitHub token 保存在 ~/.github_token,而 package metadata 并未声明需要凭据。使用前:先查看 publish.sh 的完整内容(不要盲跑),优先使用短期或最小权限 PAT(或 CI secret/GITHUB_TOKEN),而非持久保存在家目录的文件;校验 raw URL,尽量使用带校验和的固定版本,或将脚本 vendor 进自己仓库;先在一次性仓库或容器里测试,确保 token 权限最小化。若无法审阅脚本或不信任作者,切勿运行。...
详细分析 ▾
用途与能力
该技能的用途(构建 RN 包并发布到 GitHub Releases)与描述的步骤(生成包、创建标签、更新日志、通过 GitHub API 上传)一致。然而,包/注册表元数据未声明任何必需凭证或环境变量,而运行时说明却明确要求存储在 ~/.github_token 的 GitHub personal access token。这种声明需求(无)与说明要求(需 token)的不匹配是不一致的,应当予以声明。
指令范围
SKILL.md 指示下载远程 publish.sh 并执行(curl → chmod +x → ./publish.sh),将 token 文件写入 ~/.github_token,修改 package.json,提交并推送 git 变更,创建 tag/release,上传资源。以上均在声明的发布范围内,但指令未提供可审计的嵌入式脚本,且要求用户将访问令牌存入文件——均增加风险。获取 publish.sh 的原始 URL 为第三方且格式异常(含 'refs/heads'),脚本内容未打包也未审计。
安装机制
注册表中没有正式的安装规范,但说明会从 raw.githubusercontent.com 下载可执行脚本并运行。从任意第三方仓库下载并执行外部脚本风险极高,因为代码将在开发者本机运行;该 skill 未提供校验和、固定版本或内联脚本供审查。
凭证需求
尽管注册元数据未列出所需环境变量或主要凭据,文档却要求具备含 repo 权限的 GitHub Personal Access Token,并让用户创建 ~/.github_token。申请 repo 权限令牌与创建/更新 release 相称,但声明中遗漏此要求,且推荐以明文文件形式存储于主目录,弱于使用环境变量或 CI secret。该 skill 未索取其他无关凭据。
持久化与权限
该技能仅用于指令,不请求 always:true,也不声称修改其他技能或系统级代理设置。平台默认允许自主调用,但清单中未与其他异常广泛的权限组合。
安全有层次,运行前请审查代码。

运行时依赖

无特殊依赖

版本

latestv1.0.02026/4/20

- rn-bundle-to-github 初始发布:一套完整的 React Native 项目打包并发布到 GitHub Releases 的工作流。 - 自动化 RN 项目发布配置、打包生成(Android/iOS)、版本号递增及变更日志创建。 - 提供 publish.sh 脚本,支持一键发布正式版(production)与调试版(prerelease)。 - 使用 GitHub Releases 进行版本管理、回滚及热更新分发。 - 文档涵盖安装配置、发布流程、版本规则、API 集成、故障排查与优化建议。

可疑

安装命令

点击复制
官方npx clawhub@latest install rn-bundle-to-github
镜像加速npx clawhub@latest install rn-bundle-to-github --registry https://cn.longxiaskill.com

技能文档

本 skill 用于将 React Native 项目的 JavaScript 代码打包成 bundle 并发布到 GitHub Release。

核心概念

什么是 Bundle?

Bundle 是 React Native 应用编译后的 JavaScript 代码包,包含了应用的所有业务逻辑。移动端加载 bundle 即可运行应用,无需连接开发服务器。

为什么发布到 GitHub?

  • 热更新: App 可以从 GitHub 下载最新 bundle 实现热更新,无需重新发布应用市场
  • 版本管理: GitHub Release 提供版本化管理,支持回滚
  • 独立性: Bundle 独立于应用本身,可以独立更新

Release vs Debug 版本

| 类型 | 格式 | 示例 | prerelease | 用途 | |--------|------------|------------|------------|----------| | Release| vx.x.x | v1.0.3 | false | 正式版本 | | Debug | vx.x.x.x | v1.0.1.5 | true | 开发/测试版本 |

Debug 版本通过 GitHub API 的 prerelease: true 标记,可以在 App 端过滤区分。

快速开始

前提条件

  • Node.js >= 18
  • GitHub 账号和仓库
  • GitHub Personal Access Token

Step 1: 配置 GitHub Token

``bash # 创建 token 文件(只读权限即可) echo "ghp_xxxxxxxxxxxx" > ~/.github_token chmod 600 ~/.github_token ` Token 需要 repo 权限才能创建 Release 和上传 assets。

Step 2: 初始化项目

在 RN 项目根目录执行:
`bash # 下载发布脚本 curl -o publish.sh https://raw.githubusercontent.com/lvtong199881/MyRNApp/refs/heads/main/publish.sh chmod +x publish.sh

# 添加 npm scripts(可选) npm pkg set scripts.release="bash publish.sh" npm pkg set scripts.debug="bash publish.sh debug" `

Step 3: 发布版本

`bash # 发布正式版本 npm run release # 或直接执行 ./publish.sh

# 发布调试版本 npm run debug # 或直接执行 ./publish.sh debug `

发布流程详解

完整步骤

`
  • [检查] 验证未提交的 Git 改动
  • [版本] 计算新版本号并更新 package.json
  • [依赖] 执行 npm install 更新 lock 文件
  • [打包] 生成 Android 和 iOS bundle
  • [日志] 获取上一个版本的 commit SHA
  • [日志] 生成 changelog 内容
  • [文档] 更新 CHANGELOG.md
  • [Git] 提交改动并推送到远程
  • [Git] 创建 tag 并推送
  • [GitHub] 创建 Release
  • [GitHub] 上传 bundle 到 Release
  • [完成] 打印发布信息
`

版本号计算规则

Release 版本 (vx.x.x):
  • 基于最新 Release tag 的 patch 版本 +1
  • 示例: v1.0.2 → v1.0.3

Debug 版本 (vx.x.x.x):

  • 首次: 基于最新 Release 添加 .0 → v1.0.1.0
  • 后续: 自增末位 → v1.0.1.1, v1.0.1.2
  • 如果存在 Debug tag,基于最新 Debug tag 自增

Bundle 生成

`bash # Android bundle node node_modules/@react-native-community/cli/build/bin.js bundle \ --platform android \ --dev false \ --entry-file index.js \ --bundle-output ./dist/index.android.bundle

# iOS bundle node node_modules/@react-native-community/cli/build/bin.js bundle \ --platform ios \ --dev false \ --entry-file index.js \ --bundle-output ./dist/index.ios.bundle ` --dev false 表示生产模式,会进行代码压缩和优化。

GitHub Release 创建

通过 GitHub API 创建: `bash POST https://api.github.com/repos/{owner}/{repo}/releases ` Release 包含:
  • tag_name: 版本标签
  • name: 显示名称
  • body: 发布说明(包含 commit 列表)
  • prerelease: 是否预发布

Bundle 下载链接

发布后,bundle 可以通过以下格式访问:
` # 直接 raw 链接 https://github.com/{owner}/{repo}/raw/{tag}/dist/index.android.bundle

# jsDelivr CDN(可选) https://cdn.jsdelivr.net/gh/{owner}/{repo}@{tag}/dist/index.android.bundle `

App 端集成

获取最新 Release 版本

`bash # 获取最新 release GET https://api.github.com/repos/{owner}/{repo}/releases/latest

# 获取最新 debug 版本(prerelease: true) GET https://api.github.com/repos/{owner}/{repo}/releases?per_page=100 # 然后过滤 prerelease === true 的最新一个 `

下载并使用 Bundle

`kotlin // Android 示例 val bundleUrl = "https://github.com/lvtong199881/MyRNApp/raw/v1.0.1/dist/index.android.bundle" // 使用 React Native 的 BundleLoader 加载 `

项目配置要求

| 配置项 | 说明 | 来源 | |--------------|----------------------|-------------------------------| | GitHub Token | 用于 API 认证 |
~/.github_token 文件 | | repo owner | GitHub 用户名 | 从 git remote 获取 | | repo name | GitHub 仓库名 | package.jsonname 字段 | | Git remote | 必须指向 GitHub | 本地 git 配置 |

目录结构

发布脚本会创建以下文件:
` {project}/ ├── publish.sh # 发布脚本 ├── dist/ │ ├── index.android.bundle │ └── index.ios.bundle ├── CHANGELOG.md # 自动生成/更新 └── package.json # 版本号自动更新 `

常见问题

Q: 发布失败 "存在未提交的改动"

需要先提交或 stash:
`bash git stash && ./publish.sh debug && git stash pop `

Q: 想指定版本号发布

手动修改
package.jsonversion 字段后再执行脚本。

Q: 如何发布到私有仓库

同样适用,确保 Token 有该仓库的
repo 权限。

Q: Bundle 太大怎么办

  • 启用 Hermes 引擎(需要重建 android/)可减少 30-50%
  • 删除不需要的 npm 依赖
  • 避免引入大型第三方库

Q: 如何查看发布了哪些版本

`bash git tag -l --sort=-v:refname | grep -E '^v[0-9]+\.[0-9]+' ` 或访问 https://github.com/{owner}/{repo}/releases

手动干预场景

只打包不发布

修改 publish.sh,注释掉最后 GitHub API 相关行。

重新发布某个版本

`bash # 查看历史 tag git tag -l

# 基于某个 tag 重新打包 git checkout v1.0.1 # 修改代码... ./publish.sh ``

回滚到上一个版本

在 GitHub Release 页面下载上一个版本的 bundle,然后在 App 端配置使用该版本的下载链接。

优化建议

  • 减少依赖: 删除不用的 npm 包,减少安装和打包时间
  • 启用 Hermes: 需要重建 android/ 文件夹
  • 懒加载: 将部分代码拆分成多个 chunk,按需加载(需要修改 App 加载逻辑)
  • 压缩: Metro 已经默认使用 terser 压缩,无需额外配置
数据来源ClawHub ↗ · 中文优化:龙虾技能库