11import { join , resolve } from 'path'
22import { slash , toArray } from '@antfu/utils'
33import { isPackageExists } from 'local-pkg'
4- import { ResolvedOptions , Options } from '../types'
4+ import { ResolvedOptions , Options , ComponentResolver , ComponentResolverObject } from '../types'
55import { LibraryResolver } from './helpers/libraryResolver'
66
77export const defaultOptions : Omit < Required < Options > , 'include' | 'exclude' | 'transformer' | 'globs' | 'directives' > = {
@@ -21,10 +21,14 @@ export const defaultOptions: Omit<Required<Options>, 'include' | 'exclude' | 'tr
2121 allowOverrides : false ,
2222}
2323
24+ function normalizeResolvers ( resolvers : ( ComponentResolver | ComponentResolver [ ] ) [ ] ) : ComponentResolverObject [ ] {
25+ return toArray ( resolvers ) . flat ( ) . map ( r => typeof r === 'function' ? { resolve : r , type : 'component' } : r )
26+ }
27+
2428export function resolveOptions ( options : Options , root : string ) : ResolvedOptions {
2529 const resolved = Object . assign ( { } , defaultOptions , options ) as ResolvedOptions
2630 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 )
2832 resolved . resolvers . push ( ...resolved . libraries . map ( lib => LibraryResolver ( lib ) ) )
2933 resolved . extensions = toArray ( resolved . extensions )
3034
@@ -60,7 +64,9 @@ export function resolveOptions(options: Options, root: string): ResolvedOptions
6064 resolved . transformer = options . transformer || getVueVersion ( ) || 'vue3'
6165 resolved . directives = ( typeof options . directives === 'boolean' )
6266 ? options . directives
63- : getVueVersion ( ) === 'vue3'
67+ : ! resolved . resolvers . some ( i => i . type === 'directive' )
68+ ? false
69+ : getVueVersion ( ) === 'vue3'
6470
6571 return resolved
6672}
0 commit comments