feat: 添加 release 脚本骨架和版本递增逻辑
This commit is contained in:
44
scripts/release.ts
Normal file
44
scripts/release.ts
Normal file
@@ -0,0 +1,44 @@
|
|||||||
|
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<void> {
|
||||||
|
// 后续 task 中实现流程编排
|
||||||
|
console.log("release 脚本骨架就绪");
|
||||||
|
}
|
||||||
|
|
||||||
|
main().catch((err: unknown) => {
|
||||||
|
console.error(err instanceof Error ? err.message : String(err));
|
||||||
|
process.exit(1);
|
||||||
|
});
|
||||||
Reference in New Issue
Block a user