1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54
|
import { readFileSync, writeFileSync, existsSync } from "fs"; import { dirname, join } from "path"; import { fileURLToPath } from "url";
const root = join(dirname(fileURLToPath(import.meta.url)), ".."); const pkg = JSON.parse(readFileSync(join(root, "package.json"), "utf8")); const version = pkg.version;
if (!version || !/^\d+\.\d+\.\d+(-[\w.-]+)?$/.test(version)) { console.error(`[sync-version] package.json 中 version 无效: ${version}`); process.exit(1); }
function replaceInFile(filePath, replacer, label) { const before = readFileSync(filePath, "utf8"); const after = replacer(before); if (before !== after) { writeFileSync(filePath, after, "utf8"); console.log(`[sync-version] ${label} -> ${version}`); return true; } return false; }
let updated = 0;
if ( replaceInFile( join(root, "src-tauri", "Cargo.toml"), (s) => s.replace(/^version\s*=\s*"[^"]*"/m, `version = "${version}"`), "src-tauri/Cargo.toml", ) ) { updated += 1; }
if ( replaceInFile( join(root, "src-tauri", "tauri.conf.json"), (s) => s.replace(/"version"\s*:\s*"[^"]*"/, `"version": "${version}"`), "src-tauri/tauri.conf.json", ) ) { updated += 1; }
if (updated === 0) { console.log(`[sync-version] 已为 ${version},无需更新`); } else { console.log(`[sync-version] 完成,共同步 ${updated} 个文件`); }
|