Skip to content

Commit 5fa9064

Browse files
committed
ci(release): add version patching and beta publishing for create-vuetify
Add script to patch create-vuetify version during release workflow Include separate publish step for create-vuetify with beta tag
1 parent 96f3712 commit 5fa9064

File tree

2 files changed

+60
-0
lines changed

2 files changed

+60
-0
lines changed
Lines changed: 54 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,54 @@
1+
import { readFileSync, writeFileSync } from 'node:fs'
2+
import { join } from 'node:path'
3+
4+
const packagePath = join(process.cwd(), 'packages/create/package.json')
5+
const pkg = JSON.parse(readFileSync(packagePath, 'utf8'))
6+
7+
// Get version from argument, e.g., "v3.0.0" or "3.0.0"
8+
let targetVersion = process.argv[2]
9+
10+
if (!targetVersion) {
11+
console.error('Usage: node patch-create-version.mjs <version>')
12+
// eslint-disable-next-line unicorn/no-process-exit
13+
process.exit(1)
14+
}
15+
16+
// Strip 'v' prefix if present
17+
if (targetVersion.startsWith('v')) {
18+
targetVersion = targetVersion.slice(1)
19+
}
20+
21+
const targetMajor = targetVersion.split('.')[0]
22+
23+
// Parse current version
24+
// Assumes semver-like: major.minor.patch(-prerelease)?
25+
const versionMatch = pkg.version.match(/^(\d+)\.(\d+)\.(\d+)(?:-(.+))?$/)
26+
27+
if (!versionMatch) {
28+
console.error(`Could not parse package version: ${pkg.version}`)
29+
// eslint-disable-next-line unicorn/no-process-exit
30+
process.exit(1)
31+
}
32+
33+
// eslint-disable-next-line unicorn/no-unreadable-array-destructuring
34+
const [, , minor, patch, prerelease] = versionMatch
35+
36+
let newPrerelease = ''
37+
38+
if (prerelease) {
39+
// 0.x.y-beta.z -> 0.x.y-beta-next.z
40+
// Non-beta: for now, keeping as is to be safe, but user only specified beta.
41+
newPrerelease = prerelease.startsWith('beta.')
42+
? `-${prerelease.replace('beta.', 'beta-next.')}`
43+
: `-${prerelease}`
44+
} else {
45+
// 0.x.y -> 0.x.y-next.1
46+
newPrerelease = '-next.1'
47+
}
48+
49+
const newVersion = `${targetMajor}.${minor}.${patch}${newPrerelease}`
50+
51+
console.log(`Patching packages/create/package.json version from ${pkg.version} to ${newVersion}`)
52+
pkg.version = newVersion
53+
54+
writeFileSync(packagePath, JSON.stringify(pkg, null, 2) + '\n')

.github/workflows/release.yml

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,9 @@ jobs:
3434
env:
3535
CONVENTIONAL_GITHUB_RELEASER_TOKEN: ${{ secrets.GITHUB_TOKEN }}
3636

37+
- name: Patch create-vuetify version
38+
run: node .github/scripts/patch-create-version.mjs 3
39+
3740
- name: Build
3841
run: pnpm build
3942

@@ -43,3 +46,6 @@ jobs:
4346

4447
- name: Publish other packages besides create-vuetify
4548
run: pnpm --filter "!create-vuetify" -r publish --tag latest --access public --no-git-checks
49+
50+
- name: Publish create-vuetify with beta
51+
run: pnpm --filter "create-vuetify" publish --tag beta --access public --no-git-checks

0 commit comments

Comments
 (0)