Skip to content

Commit 90a14d9

Browse files
committed
refactor: restrict version
1 parent 5d84351 commit 90a14d9

File tree

3 files changed

+13
-4
lines changed

3 files changed

+13
-4
lines changed

README.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -359,6 +359,7 @@ Components({
359359
exclude: [/[\\/]node_modules[\\/]/, /[\\/]\.git[\\/]/, /[\\/]\.nuxt[\\/]/],
360360

361361
// Vue version of project. It will detect automatically if not specified.
362+
// Acceptable value: 2 | 2.7 | 3
362363
version: 2.7
363364
})
364365
```

src/core/options.ts

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -66,6 +66,9 @@ export function resolveOptions(options: Options, root: string): ResolvedOptions
6666

6767
resolved.root = root
6868
resolved.version = resolved.version ?? getVueVersion(root)
69+
if (resolved.version < 2 || resolved.version >= 4)
70+
throw new Error(`[unplugin-vue-components] unsupported version: ${resolved.version}`)
71+
6972
resolved.transformer = options.transformer || `vue${Math.trunc(resolved.version) as 2 | 3}`
7073
resolved.directives = (typeof options.directives === 'boolean')
7174
? options.directives
@@ -75,7 +78,12 @@ export function resolveOptions(options: Options, root: string): ResolvedOptions
7578
return resolved
7679
}
7780

78-
function getVueVersion(root: string): number {
79-
const version = getPackageInfoSync('vue', { paths: [root] })?.version || '3'
80-
return +(version.split('.').slice(0, 2).join('.'))
81+
function getVueVersion(root: string): 2 | 2.7 | 3 {
82+
const raw = getPackageInfoSync('vue', { paths: [root] })?.version || '3'
83+
const version = +(raw.split('.').slice(0, 2).join('.'))
84+
if (version === 2.7)
85+
return 2.7
86+
else if (version >= 3)
87+
return 3
88+
return 2
8189
}

src/types.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -175,7 +175,7 @@ export interface Options {
175175
/**
176176
* Vue version of project. It will detect automatically if not specified.
177177
*/
178-
version?: number
178+
version?: 2 | 2.7 | 3
179179
}
180180

181181
export type ResolvedOptions = Omit<

0 commit comments

Comments
 (0)