Skip to content

Commit 596b803

Browse files
author
雅影
committed
fix: autofix package.version while betaBranch
1 parent dcc71c6 commit 596b803

File tree

2 files changed

+41
-16
lines changed

2 files changed

+41
-16
lines changed

src/built-in-plugins/command-publish/plugin/run-publish.ts

+4
Original file line numberDiff line numberDiff line change
@@ -107,6 +107,8 @@ async function publishByPackageName(
107107

108108
await checkEnvBeforePublish(targetPackageJson, sourceType);
109109

110+
logInfo('Check if npm package exist');
111+
110112
targetPackageJson.version = await generateVersion(
111113
options,
112114
isDevelopBranch,
@@ -166,6 +168,8 @@ async function publishPackageAndItsMonoPackage(
166168

167169
await checkEnvBeforePublish(targetPackageJson, sourceType);
168170

171+
logInfo('Check if npm package exist');
172+
169173
const monoPackageVersion: {
170174
[key in string]: string;
171175
} = {};

src/built-in-plugins/command-publish/plugin/utils.ts

+37-16
Original file line numberDiff line numberDiff line change
@@ -61,8 +61,6 @@ export async function checkEnvBeforePublish(targetPackageJson: Partial<PackageJs
6161
if (!(await isWorkingTreeClean())) {
6262
await cleanWorkingTree();
6363
}
64-
65-
logInfo('Check if npm package exist');
6664
}
6765

6866
export async function addTagAndPush(tagName: string, targetPackageJson: Partial<PackageJson>) {
@@ -112,20 +110,43 @@ export async function generateVersion(
112110

113111
// Generate beta version if branch is not master or develop
114112
if (options.tag === 'beta' || !isDevelopBranch) {
115-
version = (semver.inc as any)(
116-
targetPackageJson.version,
117-
'prerelease',
118-
currentBranchName.replace(/\//g, '').replace(/\./g, ''),
119-
);
120-
let checkBetaVersionResult;
121-
version = targetPackageJson.version;
122-
// check the package verion and if it existing auto increase it
123-
do {
124-
version = (semver.inc as any)(version, 'prerelease', currentBranchName.replace(/\//g, '').replace(/\./g, ''));
125-
checkBetaVersionResult = execSync(`${targetConfig.npmClient} view ${targetPackageJson.name}@${version} version`)
126-
.toString()
127-
.trim();
128-
} while (checkBetaVersionResult);
113+
const basicVersion = execSync(`${targetConfig.npmClient} view ${targetPackageJson.name} version`)
114+
.toString()
115+
.trim();
116+
117+
const branchNameInVersion = currentBranchName.replace(/\//g, '').replace(/\./g, '');
118+
119+
let publishedVersions = execSync(`${targetConfig.npmClient} view ${targetPackageJson.name} versions`)
120+
.toString()
121+
.trim()
122+
.replace(/\n|'| |\[|\]/g, '')
123+
.split(',');
124+
125+
let maxBetaVersionNum = 0;
126+
127+
// get max beta version
128+
publishedVersions = publishedVersions.filter((v: string) => {
129+
if (v.includes(branchNameInVersion)) {
130+
const tempBetaVersion = Number(v.split(`${branchNameInVersion}.`)[1]);
131+
132+
if (maxBetaVersionNum < tempBetaVersion) {
133+
maxBetaVersionNum = tempBetaVersion;
134+
}
135+
136+
return true;
137+
}
138+
139+
return false;
140+
});
141+
142+
// basic version include branchName -> use basic version
143+
if (basicVersion.includes(branchNameInVersion)) {
144+
const tempVersion = basicVersion.split('.').reverse();
145+
tempVersion[0] = maxBetaVersionNum.toString();
146+
version = tempVersion.reverse().join('.');
147+
} else {
148+
version = `${basicVersion}-${branchNameInVersion}.${maxBetaVersionNum + 1}`;
149+
}
129150
} else if (versionResult) {
130151
if (!options.semver) {
131152
const versionPrompt = await inquirer.prompt([

0 commit comments

Comments
 (0)