Files
tauri-meeting/vite/scripts/update-version.ts

57 lines
2.1 KiB
TypeScript
Raw Normal View History

import fs from 'fs';
import path from 'path';
import { fileURLToPath } from 'url';
// 获取项目根目录和 src-tauri 目录路径
const __filename = fileURLToPath(import.meta.url);
const __dirname = path.dirname(__filename);
const projectRoot = path.join(__dirname, '..', '..');
const tauriConfigPath = path.join(projectRoot, 'src-tauri', 'tauri.conf.json');
const packageJsonPath = path.join(projectRoot, 'package.json');
try {
// 读取 tauri.conf.json
const tauriConfigRaw: string = fs.readFileSync(tauriConfigPath, 'utf8');
const tauriConfig: { version: string } = JSON.parse(tauriConfigRaw);
const tauriVersion: string = tauriConfig.version;
console.log(`从 tauri.conf.json 读取的版本号: ${tauriVersion}`);
// 计算新的版本号tauri版本号尾号加1
const newPackageVersion: string = incrementVersion(tauriVersion);
// 读取 package.json
const packageJsonRaw: string = fs.readFileSync(packageJsonPath, 'utf8');
const packageJson: { version: string } = JSON.parse(packageJsonRaw);
// 更新 package.json 中的版本号
packageJson.version = newPackageVersion;
tauriConfig.version = newPackageVersion;
// 写入更新后的 package.json
fs.writeFileSync(packageJsonPath, JSON.stringify(packageJson, null, 2), 'utf8');
fs.writeFileSync(tauriConfigPath, JSON.stringify(tauriConfig, null, 2), 'utf8');
console.log(`已更新 package.json 和 tauri.conf.json 的版本号为: ${newPackageVersion}`);
} catch (error: any) {
console.error('更新版本号时发生错误:', error);
process.exit(1);
}
/**
* 1
* @param version - "1.0.10"
* @returns "1.0.11"
*/
function incrementVersion(version: string): string {
const parts: string[] = version.split('.');
if (parts.length > 0) {
const lastPartIndex = parts.length - 1;
const lastPart = Number(parts[lastPartIndex]);
if (!isNaN(lastPart)) {
parts[lastPartIndex] = (lastPart + 1).toString();
return parts.join('.');
}
}
return version; // 如果无法解析版本号,则返回原版本号
}