51 lines
1.3 KiB
JavaScript
51 lines
1.3 KiB
JavaScript
const fs = require('fs')
|
||
const path = require('path')
|
||
|
||
const rootDir = path.resolve(__dirname, '..')
|
||
|
||
const pkgPath = path.join(rootDir, 'package.json')
|
||
const androidGradlePath = path.join(rootDir, 'android', 'app', 'build.gradle')
|
||
|
||
const readJson = (file) => {
|
||
const raw = fs.readFileSync(file, 'utf8')
|
||
return JSON.parse(raw)
|
||
}
|
||
|
||
const calcVersionCode = (version) => {
|
||
const [major = 0, minor = 0, patch = 0] = String(version)
|
||
.split('.')
|
||
.map((n) => Number.parseInt(n, 10) || 0)
|
||
|
||
return major * 10000 + minor * 100 + patch
|
||
}
|
||
|
||
const syncAndroidGradle = (version) => {
|
||
if (!fs.existsSync(androidGradlePath)) {
|
||
console.warn('[version-sync] 未找到 android/app/build.gradle,跳过 Android 同步')
|
||
return
|
||
}
|
||
|
||
const versionCode = calcVersionCode(version)
|
||
let content = fs.readFileSync(androidGradlePath, 'utf8')
|
||
|
||
content = content.replace(/versionCode\s+\d+/, `versionCode ${versionCode}`)
|
||
content = content.replace(/versionName\s+"[^"]+"/, `versionName "${version}"`)
|
||
|
||
fs.writeFileSync(androidGradlePath, content)
|
||
console.log(
|
||
`[version-sync] Android 已同步:versionName=${version}, versionCode=${versionCode}`,
|
||
)
|
||
}
|
||
|
||
const main = () => {
|
||
const pkg = readJson(pkgPath)
|
||
const version = pkg.version
|
||
if (!version) {
|
||
throw new Error('package.json 中缺少 version 字段')
|
||
}
|
||
|
||
syncAndroidGradle(version)
|
||
}
|
||
|
||
main()
|