@@ -43,7 +43,9 @@ async function confirm(msg: string): Promise<boolean> {
4343}
4444
4545function bumpVersion ( current : string , type : "patch" | "minor" | "major" ) : string {
46- const [ major , minor , patch ] = current . split ( "." ) . map ( Number ) ;
46+ // Strip prerelease suffix (e.g. "0.1.0-rc.4" → "0.1.0")
47+ const base = current . replace ( / - .* $ / , "" ) ;
48+ const [ major , minor , patch ] = base . split ( "." ) . map ( Number ) ;
4749 switch ( type ) {
4850 case "patch" : return `${ major } .${ minor } .${ patch + 1 } ` ;
4951 case "minor" : return `${ major } .${ minor + 1 } .0` ;
@@ -53,20 +55,24 @@ function bumpVersion(current: string, type: "patch" | "minor" | "major"): string
5355
5456// ── Parse args ──
5557
58+ function npmTag ( version : string ) : "latest" | "rc" {
59+ return version . includes ( "-" ) ? "rc" : "latest" ;
60+ }
61+
5662function parseArgs ( ) : { version : string ; tag : "latest" | "rc" } {
5763 const args = process . argv . slice ( 2 ) ;
5864
59- // RC: exact version required
60- if ( args . includes ( "--rc " ) ) {
61- const idx = args . indexOf ( "--rc " ) ;
65+ // Exact version: --version 0.1.0 or -- version 0.2.0-rc.1
66+ if ( args . includes ( "--version " ) ) {
67+ const idx = args . indexOf ( "--version " ) ;
6268 const ver = args [ idx + 1 ] ;
6369 if ( ! ver || ver . startsWith ( "--" ) ) {
64- fatal ( "--rc requires an exact version (e.g. --rc 0.2.0-rc.1)" ) ;
70+ fatal ( "--version requires an exact version (e.g. --version 0.1.0 or --version 0.2.0-rc.1)" ) ;
6571 }
66- if ( ! ver . includes ( "-" ) ) {
67- fatal ( `RC version should contain a prerelease identifier (got "${ ver } ") ` ) ;
72+ if ( ! / ^ \d + \. \d + \. \d + ( - [ \w . ] + ) ? $ / . test ( ver ) ) {
73+ fatal ( `Invalid version format: "${ ver } "` ) ;
6874 }
69- return { version : ver , tag : "rc" } ;
75+ return { version : ver , tag : npmTag ( ver ) } ;
7076 }
7177
7278 // Semver bump
@@ -79,7 +85,7 @@ function parseArgs(): { version: string; tag: "latest" | "rc" } {
7985 }
8086 }
8187
82- fatal ( "Usage: release --patch | --minor | --major | --rc <version>" ) ;
88+ fatal ( "Usage: release --patch | --minor | --major | --version <version>" ) ;
8389}
8490
8591// ── Find publishable packages ──
0 commit comments