@@ -46,46 +46,27 @@ async function release() {
4646 const pkg = JSON . parse ( fs . readFileSync ( './package.json' , 'utf-8' ) )
4747 const { name, version : currentVersion } = pkg
4848
49- const choices = Array . from ( [ 'patch' , 'minor' , 'major' ] , title => ( {
49+ const choices = Array . from ( [ 'patch' , 'minor' , 'major' , 'prerelease' , 'prepatch' , 'preminor' , 'premajor' , 'custom' ] , title => ( {
5050 title,
51- value : semver . inc ( currentVersion , title as semver . ReleaseType ) ,
51+ value : title ,
5252 } ) )
53- . concat ( Array . from ( [ 'prerelease' ] , title => ( {
54- title,
55- value : title ,
56- } ) ) )
57- . concat ( Array . from ( [ 'prepatch' ] , title => ( {
58- title,
59- value : title ,
60- } ) ) )
61- . concat ( Array . from ( [ 'preminor' ] , title => ( {
62- title,
63- value : title ,
64- } ) ) )
65- . concat ( Array . from ( [ 'premajor' ] , title => ( {
66- title,
67- value : title ,
68- } ) ) )
69- . concat ( Array . from ( [ 'custom' ] , title => ( {
70- title,
71- value : title ,
72- } ) ) )
73-
74- const { t } = ( await prompts ( {
53+
54+ const { releaseType } = ( await prompts ( {
7555 type : 'select' ,
76- name : 't ' ,
56+ name : 'releaseType ' ,
7757 message : 'Select release type' ,
7858 choices,
7959 } ) )
8060
81- let targetVersion = t
82-
8361 const parsedCurrentVersion = semver . parse ( currentVersion ) as SemVer
62+ let targetVersion
8463
85- if ( t . startsWith ( 'pre' ) ) {
64+ if ( [ 'patch' , 'minor' , 'major' ] . includes ( releaseType ) ) {
65+ targetVersion = semver . inc ( currentVersion , releaseType as semver . ReleaseType )
66+ } else if ( releaseType . startsWith ( 'pre' ) ) {
8667 // 只升 prerelease 版本时,已经是 beta 阶段就不可能再回到 alpha 阶段
8768 let prereleaseTypes = [ 'alpha' , 'beta' , 'rc' ]
88- if ( t === 'prerelease' ) {
69+ if ( releaseType === 'prerelease' ) {
8970 const i = prereleaseTypes . indexOf ( parsedCurrentVersion . prerelease [ 0 ] )
9071 if ( i !== - 1 ) {
9172 prereleaseTypes = prereleaseTypes . slice ( i )
@@ -94,17 +75,17 @@ async function release() {
9475
9576 targetVersion = prereleaseTypes . length === 1
9677 // 已经是 rc 阶段就不用选了
97- ? semver . inc ( currentVersion , t , prereleaseTypes [ 0 ] )
78+ ? semver . inc ( currentVersion , releaseType , prereleaseTypes [ 0 ] )
9879 : ( await prompts ( {
9980 type : 'select' ,
10081 name : 'value' ,
10182 message : 'Select prerelease type' ,
10283 choices : Array . from ( prereleaseTypes , title => ( {
10384 title,
104- value : semver . inc ( currentVersion , t , title ) ,
85+ value : semver . inc ( currentVersion , releaseType , title ) ,
10586 } ) ) ,
10687 } ) ) . value
107- } else if ( t === 'custom' ) {
88+ } else {
10889 targetVersion = ( await prompts ( {
10990 type : 'text' ,
11091 name : 'value' ,
@@ -126,7 +107,7 @@ async function release() {
126107 return
127108 }
128109
129- if ( [ 'minor' , 'major' ] . includes ( t ) ) {
110+ if ( [ 'minor' , 'major' ] . includes ( releaseType ) ) {
130111 const parsedTargetVersion = semver . parse ( targetVersion ) as SemVer
131112 const pattern = new RegExp ( `${ name } @${ parsedCurrentVersion . major } .${ parsedCurrentVersion . minor } ` , 'g' )
132113 const replacement = `${ name } @${ parsedTargetVersion . major } .${ parsedTargetVersion . minor } `
0 commit comments