Files
yaoayanui/src-tauri/scripts/bump-version.cjs
949036910@qq.com 53d0a6eb5f 111
2026-05-30 12:46:13 +08:00

57 lines
1.8 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
/**
* 构建前将版本号 patch 段 +1并同步写入 tauri.conf.json / Cargo.toml / package.json。
*/
const fs = require("node:fs");
const path = require("node:path");
const tauriDir = path.join(__dirname, "..");
const rootDir = path.join(tauriDir, "..");
const tauriConfPath = path.join(tauriDir, "tauri.conf.json");
const cargoTomlPath = path.join(tauriDir, "Cargo.toml");
const packageJsonPath = path.join(rootDir, "package.json");
function bumpPatch(version) {
const parts = String(version)
.trim()
.split(".")
.map((p) => Number.parseInt(p, 10));
if (parts.length === 0 || parts.some(Number.isNaN)) {
throw new Error(`无法解析版本号: ${version}`);
}
parts[parts.length - 1] += 1;
return parts.join(".");
}
function updateJsonVersion(filePath, newVersion) {
const data = JSON.parse(fs.readFileSync(filePath, "utf8"));
const oldVersion = data.version;
data.version = newVersion;
fs.writeFileSync(filePath, `${JSON.stringify(data, null, 2)}\n`, "utf8");
return oldVersion;
}
function updateCargoVersion(filePath, newVersion) {
const content = fs.readFileSync(filePath, "utf8");
const match = content.match(/^version\s*=\s*"([^"]+)"/m);
if (!match) {
throw new Error(`Cargo.toml 中未找到 version 字段: ${filePath}`);
}
const oldVersion = match[1];
const next = content.replace(
/^version\s*=\s*"[^"]+"/m,
`version = "${newVersion}"`,
);
fs.writeFileSync(filePath, next, "utf8");
return oldVersion;
}
const conf = JSON.parse(fs.readFileSync(tauriConfPath, "utf8"));
const newVersion = bumpPatch(conf.version);
updateJsonVersion(tauriConfPath, newVersion);
updateJsonVersion(packageJsonPath, newVersion);
updateCargoVersion(cargoTomlPath, newVersion);
console.log(`版本号已更新: ${conf.version} -> ${newVersion}`);