Skip to content

Commit 5efcd99

Browse files
authored
feat: add filter option (#146)
1 parent 199f655 commit 5efcd99

File tree

2 files changed

+22
-13
lines changed

2 files changed

+22
-13
lines changed

src/core/options.ts

Lines changed: 17 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ import hasPkg from 'has-pkg'
44
import { ResolvedOptions, Options } from '../types'
55
import { LibraryResolver } from './helpers/libraryResolver'
66

7-
export const defaultOptions: Omit<Required<Options>, 'include' | 'exclude' | 'transformer'> = {
7+
export const defaultOptions: Omit<Required<Options>, 'include' | 'exclude' | 'transformer' | 'globs'> = {
88
dirs: 'src/components',
99
extensions: 'vue',
1010
deep: true,
@@ -28,20 +28,24 @@ export function resolveOptions(options: Options, root: string): ResolvedOptions
2828
resolved.resolvers.push(...resolved.libraries.map(lib => LibraryResolver(lib)))
2929
resolved.extensions = toArray(resolved.extensions)
3030

31-
const extsGlob = resolved.extensions.length === 1
32-
? resolved.extensions
33-
: `{${resolved.extensions.join(',')}}`
31+
if (resolved.globs) {
32+
resolved.globs = toArray(resolved.globs).map((glob: string) => slash(resolve(root, glob)))
33+
} else {
34+
const extsGlob = resolved.extensions.length === 1
35+
? resolved.extensions
36+
: `{${resolved.extensions.join(',')}}`
37+
38+
resolved.dirs = toArray(resolved.dirs)
39+
resolved.resolvedDirs = resolved.dirs.map(i => slash(resolve(root, i)))
3440

35-
resolved.dirs = toArray(resolved.dirs)
36-
resolved.resolvedDirs = resolved.dirs.map(i => slash(resolve(root, i)))
37-
38-
resolved.globs = resolved.resolvedDirs.map(i => resolved.deep
39-
? slash(join(i, `**/*.${extsGlob}`))
40-
: slash(join(i, `*.${extsGlob}`)),
41-
)
41+
resolved.globs = resolved.resolvedDirs.map(i => resolved.deep
42+
? slash(join(i, `**/*.${extsGlob}`))
43+
: slash(join(i, `*.${extsGlob}`)),
44+
)
4245

43-
if (!resolved.extensions.length)
44-
throw new Error('[unplugin-vue-components] `extensions` option is required to search for components')
46+
if (!resolved.extensions.length)
47+
throw new Error('[unplugin-vue-components] `extensions` option is required to search for components')
48+
}
4549

4650
resolved.dts = !options.dts
4751
? false

src/types.ts

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -53,6 +53,11 @@ export interface Options {
5353
*/
5454
extensions?: string | string[]
5555

56+
/**
57+
* Glob patterns to match file names to be detected as components.
58+
*/
59+
globs?: string | string[]
60+
5661
/**
5762
* Search for subdirectories
5863
* @default true

0 commit comments

Comments
 (0)