Skip to content

Commit 3ecdead

Browse files
authored
fix: default to only resolve components (unplugin#193)
1 parent bb6dbeb commit 3ecdead

File tree

3 files changed

+16
-8
lines changed

3 files changed

+16
-8
lines changed

src/core/helpers/libraryResolver.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import fs from 'fs'
22
import { dirname, join } from 'path'
33
import Debug from 'debug'
4-
import { ComponentResolver, UILibraryOptions } from '../../types'
4+
import { ComponentResolverObject, UILibraryOptions } from '../../types'
55
import { camelCase, kebabCase, resolveImportPath } from '../utils'
66

77
const debug = Debug('unplugin-vue-components:helper:library')
@@ -26,7 +26,7 @@ export function tryLoadVeturTags(name: string): string[] | undefined {
2626
}
2727
}
2828

29-
export function LibraryResolver(options: UILibraryOptions): ComponentResolver {
29+
export function LibraryResolver(options: UILibraryOptions): ComponentResolverObject {
3030
const {
3131
name: libraryName,
3232
entries = tryLoadVeturTags(options.name),

src/core/options.ts

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import { join, resolve } from 'path'
22
import { slash, toArray } from '@antfu/utils'
33
import { isPackageExists } from 'local-pkg'
4-
import { ResolvedOptions, Options } from '../types'
4+
import { ResolvedOptions, Options, ComponentResolver, ComponentResolverObject } from '../types'
55
import { LibraryResolver } from './helpers/libraryResolver'
66

77
export 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+
2428
export 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
}

src/types.ts

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -16,10 +16,12 @@ export interface ComponentInfo extends ImportInfo {
1616

1717
export type ComponentResolveResult = Awaitable<string | ComponentInfo | null | undefined | void>
1818

19-
export type ComponentResolver = {
19+
export type ComponentResolverFunction = (name: string) => ComponentResolveResult
20+
export type ComponentResolverObject = {
2021
type: 'component' | 'directive'
21-
resolve: (name: string) => ComponentResolveResult
22+
resolve: ComponentResolverFunction
2223
}
24+
export type ComponentResolver = ComponentResolverFunction | ComponentResolverObject
2325
export interface UILibraryOptions {
2426
name: string
2527
prefix?: string
@@ -142,7 +144,7 @@ export type ResolvedOptions = Omit<
142144
Required<Options>,
143145
'resolvers'|'libraries'|'extensions'|'dirs'|'globalComponentsDeclaration'
144146
> & {
145-
resolvers: ComponentResolver[]
147+
resolvers: ComponentResolverObject[]
146148
libraries: UILibraryOptions[]
147149
extensions: string[]
148150
dirs: string[]

0 commit comments

Comments
 (0)
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy