diff --git a/scripts/release.ts b/scripts/release.ts index c3915d9..38b5a80 100644 --- a/scripts/release.ts +++ b/scripts/release.ts @@ -2,13 +2,13 @@ import { readFileSync, writeFileSync } from "node:fs"; import { createInterface } from "node:readline"; import { join } from "node:path"; -interface Semver { +export interface Semver { major: number; minor: number; patch: number; } -type BumpType = "major" | "minor" | "patch"; +export type BumpType = "major" | "minor" | "patch"; export function parseSemver(version: string): Semver { const parts = version.split("."); @@ -194,7 +194,9 @@ async function main(): Promise { console.log("[4/4] npm 发布完成"); } -main().catch((err: unknown) => { - console.error(err instanceof Error ? err.message : String(err)); - process.exit(1); -}); +if (import.meta.main) { + main().catch((err: unknown) => { + console.error(err instanceof Error ? err.message : String(err)); + process.exit(1); + }); +} diff --git a/tests/scripts/release.test.ts b/tests/scripts/release.test.ts index 6d9ae93..bbccaa5 100644 --- a/tests/scripts/release.test.ts +++ b/tests/scripts/release.test.ts @@ -1,31 +1,5 @@ import { describe, it, expect } from "bun:test"; - -function parseSemver(version: string): { major: number; minor: number; patch: number } { - 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! }; -} - -function bumpVersion(current: string, type: "major" | "minor" | "patch"): 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}`; - } -} +import { parseSemver, bumpVersion } from "../../scripts/release"; describe("parseSemver", () => { it("解析标准版本号 1.2.3", () => {