@@ -61,8 +61,6 @@ export async function checkEnvBeforePublish(targetPackageJson: Partial<PackageJs
61
61
if ( ! ( await isWorkingTreeClean ( ) ) ) {
62
62
await cleanWorkingTree ( ) ;
63
63
}
64
-
65
- logInfo ( 'Check if npm package exist' ) ;
66
64
}
67
65
68
66
export async function addTagAndPush ( tagName : string , targetPackageJson : Partial < PackageJson > ) {
@@ -112,20 +110,43 @@ export async function generateVersion(
112
110
113
111
// Generate beta version if branch is not master or develop
114
112
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
+ }
129
150
} else if ( versionResult ) {
130
151
if ( ! options . semver ) {
131
152
const versionPrompt = await inquirer . prompt ( [
0 commit comments