@@ -4,7 +4,7 @@ import { getPackageInfoSync, isPackageExists } from 'local-pkg'
4
4
import type { ComponentResolver , ComponentResolverObject , Options , ResolvedOptions } from '../types'
5
5
import { detectTypeImports } from './type-imports/detect'
6
6
7
- export const defaultOptions : Omit < Required < Options > , 'include' | 'exclude' | 'transformer' | 'globs' | 'directives' | 'types' > = {
7
+ export const defaultOptions : Omit < Required < Options > , 'include' | 'exclude' | 'transformer' | 'globs' | 'directives' | 'types' | 'version' > = {
8
8
dirs : 'src/components' ,
9
9
extensions : 'vue' ,
10
10
deep : true ,
@@ -65,16 +65,25 @@ export function resolveOptions(options: Options, root: string): ResolvedOptions
65
65
resolved . types = resolved . types || [ ]
66
66
67
67
resolved . root = root
68
- resolved . transformer = options . transformer || getVueVersion ( root ) || 'vue3'
68
+ 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
+
72
+ resolved . transformer = options . transformer || `vue${ Math . trunc ( resolved . version ) as 2 | 3 } `
69
73
resolved . directives = ( typeof options . directives === 'boolean' )
70
74
? options . directives
71
75
: ! resolved . resolvers . some ( i => i . type === 'directive' )
72
76
? false
73
- : getVueVersion ( root ) === 'vue3'
77
+ : resolved . version >= 3
74
78
return resolved
75
79
}
76
80
77
- function getVueVersion ( root : string ) {
78
- const version = getPackageInfoSync ( 'vue' , { paths : [ root ] } ) ?. version || '3'
79
- return version . startsWith ( '2.' ) ? 'vue2' : 'vue3'
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 < 2.7 )
87
+ return 2
88
+ return 3
80
89
}
0 commit comments