refactor: 测试文件改为导入源码函数,添加 import.meta.main 保护
This commit is contained in:
@@ -2,13 +2,13 @@ import { readFileSync, writeFileSync } from "node:fs";
|
|||||||
import { createInterface } from "node:readline";
|
import { createInterface } from "node:readline";
|
||||||
import { join } from "node:path";
|
import { join } from "node:path";
|
||||||
|
|
||||||
interface Semver {
|
export interface Semver {
|
||||||
major: number;
|
major: number;
|
||||||
minor: number;
|
minor: number;
|
||||||
patch: number;
|
patch: number;
|
||||||
}
|
}
|
||||||
|
|
||||||
type BumpType = "major" | "minor" | "patch";
|
export type BumpType = "major" | "minor" | "patch";
|
||||||
|
|
||||||
export function parseSemver(version: string): Semver {
|
export function parseSemver(version: string): Semver {
|
||||||
const parts = version.split(".");
|
const parts = version.split(".");
|
||||||
@@ -194,7 +194,9 @@ async function main(): Promise<void> {
|
|||||||
console.log("[4/4] npm 发布完成");
|
console.log("[4/4] npm 发布完成");
|
||||||
}
|
}
|
||||||
|
|
||||||
main().catch((err: unknown) => {
|
if (import.meta.main) {
|
||||||
console.error(err instanceof Error ? err.message : String(err));
|
main().catch((err: unknown) => {
|
||||||
process.exit(1);
|
console.error(err instanceof Error ? err.message : String(err));
|
||||||
});
|
process.exit(1);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|||||||
@@ -1,31 +1,5 @@
|
|||||||
import { describe, it, expect } from "bun:test";
|
import { describe, it, expect } from "bun:test";
|
||||||
|
import { parseSemver, bumpVersion } from "../../scripts/release";
|
||||||
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}`;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
describe("parseSemver", () => {
|
describe("parseSemver", () => {
|
||||||
it("解析标准版本号 1.2.3", () => {
|
it("解析标准版本号 1.2.3", () => {
|
||||||
|
|||||||
Reference in New Issue
Block a user