@@ -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
6866export 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