Skip to content

Commit 2ce4d66

Browse files
committed
feat(templates): add version-aware template source handling
add getTemplateSource utility to handle version-specific template URLs export new utils and update scaffold/installFeature to use versioned templates
1 parent 986998c commit 2ce4d66

5 files changed

Lines changed: 18 additions & 2 deletions

File tree

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
export { version } from '../../package.json'

packages/shared/src/functions/scaffold.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ import { join } from 'pathe'
44
import { readPackageJSON, writePackageJSON } from 'pkg-types'
55
import { applyFeatures, vuetifyNuxtManual } from '../features'
66
import { convertProjectToJS } from '../utils/convertProjectToJS'
7+
import { getTemplateSource } from '../utils/getTemplateSource'
78
import { installDependencies } from '../utils/installDependencies'
89

910
export interface ScaffoldOptions {
@@ -87,7 +88,7 @@ export async function scaffold (options: ScaffoldOptions, callbacks: ScaffoldCal
8788
debug(`templatePath does not exist: ${templatePath}`)
8889
}
8990
} else {
90-
const templateSource = `gh:vuetifyjs/cli/templates/${templateName}`
91+
const templateSource = getTemplateSource(templateName)
9192

9293
try {
9394
await downloadTemplate(templateSource, {
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
import { version } from '../constants/version'
2+
3+
export function getTemplateSource (templateName: string) {
4+
let tag = `v${version}`
5+
if (version.includes('beta-next')) {
6+
tag = `v${version.replace('beta-next', 'beta')}`
7+
} else if (version.endsWith('-next.1')) {
8+
tag = `v${version.slice(0, -7)}`
9+
}
10+
return `gh:vuetifyjs/cli/templates/${templateName}#${tag}`
11+
}

packages/shared/src/utils/index.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,6 @@
11
export * from './cli'
2+
export * from './convertProjectToJS'
3+
export * from './getTemplateSource'
24
export * from './installFeature'
35
export * from './npm'
46
export * from './package'

packages/shared/src/utils/installFeature.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ import { cpSync, existsSync, mkdtempSync, rmSync } from 'node:fs'
22
import { tmpdir } from 'node:os'
33
import { downloadTemplate } from 'giget'
44
import { join } from 'pathe'
5+
import { getTemplateSource } from './getTemplateSource'
56

67
export async function installFeature (feature: string, cwd: string, type: 'vuetify' | 'vuetify0' = 'vuetify') {
78
const templateBase = type === 'vuetify0' ? 'vuetify0' : 'vue'
@@ -15,7 +16,7 @@ export async function installFeature (feature: string, cwd: string, type: 'vueti
1516
} else {
1617
const tmp = mkdtempSync(join(tmpdir(), 'vuetify-feature-'))
1718
try {
18-
await downloadTemplate(`gh:vuetifyjs/cli/templates/${templateName}`, {
19+
await downloadTemplate(getTemplateSource(templateName), {
1920
dir: tmp,
2021
})
2122
cpSync(tmp, cwd, { recursive: true })

0 commit comments

Comments
 (0)