interface Semver { major: number; minor: number; patch: number; } type BumpType = "major" | "minor" | "patch"; export function parseSemver(version: string): Semver { const parts = version.split("."); if (parts.length !== 3) { throw new Error(`无效的版本号格式: ${version}`); } const [major, minor, patch] = parts.map((p) => { const n = Number(p); if (Number.isNaN(n) || !Number.isInteger(n) || n < 0) { throw new Error(`无效的版本号格式: ${version}`); } return n; }); return { major: major!, minor: minor!, patch: patch! }; } export function bumpVersion(current: string, type: BumpType): string { const semver = parseSemver(current); switch (type) { case "major": return `${semver.major + 1}.0.0`; case "minor": return `${semver.major}.${semver.minor + 1}.0`; case "patch": return `${semver.major}.${semver.minor}.${semver.patch + 1}`; } } async function main(): Promise { // 后续 task 中实现流程编排 console.log("release 脚本骨架就绪"); } main().catch((err: unknown) => { console.error(err instanceof Error ? err.message : String(err)); process.exit(1); });