From 4f12a354f6d81cd54ff314c632e8ea552501cbc3 Mon Sep 17 00:00:00 2001 From: liangxu Date: Thu, 11 Jun 2026 09:32:32 +0800 Subject: [PATCH] chore(desktop-client): auto-bump version before packaging Add scripts/bump-version.cjs and run it ahead of package:mac/win/linux so every build gets a fresh patch version. Supports DESKTOP_VERSION for an explicit version, or major/minor/patch via argument or DESKTOP_VERSION_BUMP. Version moves 0.1.0 -> 0.1.1. Co-Authored-By: Claude Fable 5 --- apps/desktop-client/package.json | 9 ++-- apps/desktop-client/scripts/bump-version.cjs | 51 ++++++++++++++++++++ 2 files changed, 56 insertions(+), 4 deletions(-) create mode 100644 apps/desktop-client/scripts/bump-version.cjs diff --git a/apps/desktop-client/package.json b/apps/desktop-client/package.json index 5f888a7..4b192c2 100644 --- a/apps/desktop-client/package.json +++ b/apps/desktop-client/package.json @@ -1,6 +1,6 @@ { "name": "@geo/desktop-client", - "version": "0.1.0", + "version": "0.1.1", "private": true, "description": "省心推客户端 — 连接和管理您的媒体账号,轻松发布和监控内容表现。", "author": { @@ -16,9 +16,10 @@ "gen:icons": "node scripts/generate-brand-icons.cjs", "obfuscate": "node scripts/obfuscate.cjs", "build:obf": "pnpm run build && pnpm run obfuscate", - "package:mac": "pnpm run build:obf && electron-builder --mac --arm64 --universal", - "package:win": "pnpm run build:obf && electron-builder --win --x64", - "package:linux": "pnpm run build:obf && electron-builder --linux --x64 --arm64", + "version:bump": "node scripts/bump-version.cjs", + "package:mac": "pnpm run version:bump && pnpm run build:obf && electron-builder --mac --arm64 --universal", + "package:win": "pnpm run version:bump && pnpm run build:obf && electron-builder --win --x64", + "package:linux": "pnpm run version:bump && pnpm run build:obf && electron-builder --linux --x64 --arm64", "sign:setup": "bash scripts/sign-setup.sh", "sign:mac": "bash scripts/sign-mac.sh", "test": "vitest run", diff --git a/apps/desktop-client/scripts/bump-version.cjs b/apps/desktop-client/scripts/bump-version.cjs new file mode 100644 index 0000000..d52f1af --- /dev/null +++ b/apps/desktop-client/scripts/bump-version.cjs @@ -0,0 +1,51 @@ +const fs = require('node:fs') +const path = require('node:path') + +const packageJsonPath = path.resolve(__dirname, '../package.json') +const packageJson = JSON.parse(fs.readFileSync(packageJsonPath, 'utf8')) + +const currentVersion = packageJson.version +const requestedVersion = process.env.DESKTOP_VERSION +const bumpType = process.argv[2] || process.env.DESKTOP_VERSION_BUMP || 'patch' + +function assertVersion(version) { + if (!/^\d+\.\d+\.\d+(?:[-+][0-9A-Za-z.-]+)?$/.test(version)) { + throw new Error(`Invalid desktop version "${version}". Expected semver like 1.2.3.`) + } +} + +function bump(version, type) { + const match = /^(\d+)\.(\d+)\.(\d+)(?:[-+].*)?$/.exec(version) + if (!match) { + throw new Error(`Cannot bump invalid desktop version "${version}".`) + } + + const major = Number(match[1]) + const minor = Number(match[2]) + const patch = Number(match[3]) + + if (type === 'major') { + return `${major + 1}.0.0` + } + + if (type === 'minor') { + return `${major}.${minor + 1}.0` + } + + if (type === 'patch') { + return `${major}.${minor}.${patch + 1}` + } + + assertVersion(type) + return type +} + +assertVersion(currentVersion) + +const nextVersion = requestedVersion || bump(currentVersion, bumpType) +assertVersion(nextVersion) + +packageJson.version = nextVersion +fs.writeFileSync(packageJsonPath, `${JSON.stringify(packageJson, null, 2)}\n`) + +console.log(`Desktop version bumped: ${currentVersion} -> ${nextVersion}`)