1
1
import { join , resolve } from 'path'
2
2
import { slash , toArray } from '@antfu/utils'
3
3
import { isPackageExists } from 'local-pkg'
4
- import { ResolvedOptions , Options } from '../types'
4
+ import { ResolvedOptions , Options , ComponentResolver , ComponentResolverObject } from '../types'
5
5
import { LibraryResolver } from './helpers/libraryResolver'
6
6
7
7
export const defaultOptions : Omit < Required < Options > , 'include' | 'exclude' | 'transformer' | 'globs' | 'directives' > = {
@@ -21,10 +21,14 @@ export const defaultOptions: Omit<Required<Options>, 'include' | 'exclude' | 'tr
21
21
allowOverrides : false ,
22
22
}
23
23
24
+ function normalizeResolvers ( resolvers : ( ComponentResolver | ComponentResolver [ ] ) [ ] ) : ComponentResolverObject [ ] {
25
+ return toArray ( resolvers ) . flat ( ) . map ( r => typeof r === 'function' ? { resolve : r , type : 'component' } : r )
26
+ }
27
+
24
28
export function resolveOptions ( options : Options , root : string ) : ResolvedOptions {
25
29
const resolved = Object . assign ( { } , defaultOptions , options ) as ResolvedOptions
26
30
resolved . libraries = toArray ( resolved . libraries ) . map ( i => typeof i === 'string' ? { name : i } : i )
27
- resolved . resolvers = toArray ( resolved . resolvers ) . flat ( )
31
+ resolved . resolvers = normalizeResolvers ( resolved . resolvers )
28
32
resolved . resolvers . push ( ...resolved . libraries . map ( lib => LibraryResolver ( lib ) ) )
29
33
resolved . extensions = toArray ( resolved . extensions )
30
34
@@ -60,7 +64,9 @@ export function resolveOptions(options: Options, root: string): ResolvedOptions
60
64
resolved . transformer = options . transformer || getVueVersion ( ) || 'vue3'
61
65
resolved . directives = ( typeof options . directives === 'boolean' )
62
66
? options . directives
63
- : getVueVersion ( ) === 'vue3'
67
+ : ! resolved . resolvers . some ( i => i . type === 'directive' )
68
+ ? false
69
+ : getVueVersion ( ) === 'vue3'
64
70
65
71
return resolved
66
72
}
0 commit comments