You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用react-native-version仅提升React Native应用的build号

仅递增React Native应用build号的可行方案

下面给出两种不同场景下的可直接使用的实现方案:

方案1:build号同步保存在package.json的version字段中

如果你的版本号格式为主版本.次版本.修订号+build号(示例:1.2.3+5),可以直接用单行命令实现build号自动递增:

  • 基础命令(会自动生成git commit和版本tag):
npm version $(node -p "const v = require('./package.json').version.split('+'); v[1] = (v[1] ? parseInt(v[1]) : 0) + 1; v.join('+')")
  • 不需要自动打git标签的版本:
npm version $(node -p "const v = require('./package.json').version.split('+'); v[1] = (v[1] ? parseInt(v[1]) : 0) + 1; v.join('+')") --no-git-tag-version

方案2:仅更新iOS/Android原生端的build号,不修改package.json的version字段

这种场景可以写轻量脚本直接修改原生配置文件:

  1. 项目根目录新建increment-build.js文件,写入以下内容:
const fs = require('fs');

// 递增Android versionCode
const gradlePath = './android/app/build.gradle';
let gradleContent = fs.readFileSync(gradlePath, 'utf8');
gradleContent = gradleContent.replace(/versionCode\s+(\d+)/, (match, code) => `versionCode ${parseInt(code) + 1}`);
fs.writeFileSync(gradlePath, gradleContent);

// 递增iOS CFBundleVersion,注意把[你的项目名]替换为实际的iOS项目文件夹名
const plistPath = './ios/[你的项目名]/Info.plist';
let plistContent = fs.readFileSync(plistPath, 'utf8');
plistContent = plistContent.replace(/<key>CFBundleVersion<\/key>\s+<string>(\d+)<\/string>/, (match, ver) => `<key>CFBundleVersion</key>\n<string>${parseInt(ver) + 1}</string>`);
fs.writeFileSync(plistPath, plistContent);

console.log('iOS、Android端build号已完成递增');
  1. 在package.json的scripts字段中添加执行脚本的命令:
"scripts": {
  // 保留原有其他scripts命令,新增下面一行
  "build:increment": "node increment-build.js"
}
  1. 后续需要递增build号时,直接运行以下命令即可:
npm run build:increment

补充说明

如果你使用的是Expo托管的React Native项目,只需要修改上述脚本逻辑,直接更新app.json中的ios.buildNumber和android.versionCode字段即可,实现逻辑更简单。

内容的提问来源于stack exchange,提问作者nivsto

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.02 09:24:03