@@ -5,6 +5,10 @@ const skipChangelog = process.env.SKIP_CHANGELOG === "1";
55const packageJson = JSON . parse (
66 readFileSync ( new URL ( "../package.json" , import . meta. url ) , "utf-8" ) ,
77) ;
8+ const semverModule = await import ( "semver" ) ;
9+ const semver = semverModule . default ?? semverModule ;
10+ const targetVersion = "2.0.0" ;
11+ const isBeforeTarget = semver . lt ( packageJson . version , targetVersion ) ;
812
913const runCommand = ( args ) => {
1014 const result = spawnSync ( "pnpm" , args , {
@@ -21,33 +25,39 @@ const runCommand = (args) => {
2125} ;
2226
2327if ( skipChangelog ) {
24- const [ { default : conventionalRecommendedBump } , semver ] = await Promise . all (
25- [
26- import ( "conventional-recommended-bump" ) ,
27- import ( "semver" ) ,
28- ] ,
29- ) ;
28+ let releaseType = "patch" ;
3029
31- const releaseType = await new Promise ( ( resolve , reject ) => {
32- conventionalRecommendedBump (
33- { preset : "conventionalcommits" } ,
34- ( error , recommendation ) => {
35- if ( error ) {
36- reject ( error ) ;
37- return ;
38- }
30+ try {
31+ const module = await import ( "conventional-recommended-bump" ) ;
32+ const candidate =
33+ typeof module . default === "function"
34+ ? module . default
35+ : undefined ;
3936
40- resolve ( recommendation . releaseType ?? "patch" ) ;
41- } ,
37+ if ( candidate ) {
38+ const recommendation = await candidate ( {
39+ preset : "conventionalcommits" ,
40+ } ) ;
41+ releaseType = recommendation ?. releaseType ?? "patch" ;
42+ } else {
43+ console . warn (
44+ "[release] conventional-recommended-bump did not expose a callable default export. Defaulting to patch bump." ,
45+ ) ;
46+ }
47+ } catch ( error ) {
48+ console . warn (
49+ `[release] Failed to determine recommended bump (${ error . message } ). Defaulting to patch.` ,
4250 ) ;
43- } ) ;
51+ }
4452
45- const nextVersion = semver . inc (
46- packageJson . version ,
47- releaseType ?? "patch" ,
48- ) ;
49- if ( ! nextVersion ) {
50- throw new Error ( "Unable to determine next version for release." ) ;
53+ let nextVersion =
54+ semver . inc ( packageJson . version , releaseType ) ?? targetVersion ;
55+
56+ if ( isBeforeTarget && semver . lt ( nextVersion , targetVersion ) ) {
57+ console . log (
58+ `[release] Forcing version to ${ targetVersion } to begin the 2.x line.` ,
59+ ) ;
60+ nextVersion = targetVersion ;
5161 }
5262
5363 console . log (
@@ -60,18 +70,32 @@ if (skipChangelog) {
6070 nextVersion ,
6171 "--yes" ,
6272 "--no-commit-hooks" ,
63- "--no-changelog " ,
64- "--no-conventional-commits " ,
73+ "--conventional-commits " ,
74+ "--no-push " ,
6575 ] ) ;
6676} else {
6777 console . log (
6878 "[release] Using Conventional Commits to generate the changelog." ,
6979 ) ;
7080
71- runCommand ( [
72- "lerna" ,
73- "version" ,
74- "--yes" ,
75- "--no-commit-hooks" ,
76- ] ) ;
81+ if ( isBeforeTarget ) {
82+ console . log (
83+ `[release] Forcing version to ${ targetVersion } to begin the 2.x line.` ,
84+ ) ;
85+ runCommand ( [
86+ "lerna" ,
87+ "version" ,
88+ targetVersion ,
89+ "--yes" ,
90+ "--no-commit-hooks" ,
91+ "--conventional-commits" ,
92+ ] ) ;
93+ } else {
94+ runCommand ( [
95+ "lerna" ,
96+ "version" ,
97+ "--yes" ,
98+ "--no-commit-hooks" ,
99+ ] ) ;
100+ }
77101}
0 commit comments