From 7f28fd42fedc0124c5ee732bc51c5e8cec079dd3 Mon Sep 17 00:00:00 2001 From: Anthony Fu Date: Wed, 19 Feb 2025 13:31:32 +0800 Subject: [PATCH 1/6] fix: try fix `globsExclude` --- src/core/options.ts | 6 ++++-- src/types.ts | 2 +- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/src/core/options.ts b/src/core/options.ts index 2c3939dc..72801d81 100644 --- a/src/core/options.ts +++ b/src/core/options.ts @@ -4,7 +4,7 @@ import { slash, toArray } from '@antfu/utils' import { getPackageInfoSync, isPackageExists } from 'local-pkg' import { detectTypeImports } from './type-imports/detect' -export const defaultOptions: Omit, 'include' | 'exclude' | 'excludeNames' | 'transformer' | 'globs' | 'directives' | 'types' | 'version'> = { +export const defaultOptions: Omit, 'include' | 'exclude' | 'excludeNames' | 'transformer' | 'globs' | 'globsExclude' | 'directives' | 'types' | 'version'> = { dirs: 'src/components', extensions: 'vue', deep: true, @@ -17,7 +17,6 @@ export const defaultOptions: Omit, 'include' | 'exclude' | 'ex transformerUserResolveFunctions: true, resolvers: [], - globsExclude: [], importPathTransform: v => v, @@ -59,6 +58,9 @@ export function resolveOptions(options: Options, root: string): ResolvedOptions throw new Error('[unplugin-vue-components] `extensions` option is required to search for components') } + if (!resolved.globsExclude) + resolved.globsExclude = [`${root}/**/node_modules/**`] + resolved.dts = !resolved.dts ? false : resolve( diff --git a/src/types.ts b/src/types.ts index f16133a7..5de3c398 100644 --- a/src/types.ts +++ b/src/types.ts @@ -98,7 +98,7 @@ export interface Options { /** * Negated glob patterns to exclude files from being detected as components. * - * @default [] + * @default ['/**\/node_modules/**'] */ globsExclude?: string | string[] From 509f25e2226ca288ec68873a7d9a0161d93d8b4d Mon Sep 17 00:00:00 2001 From: Anthony Fu Date: Wed, 19 Feb 2025 13:35:03 +0800 Subject: [PATCH 2/6] chore: update --- src/core/options.ts | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/core/options.ts b/src/core/options.ts index 72801d81..b0b194c3 100644 --- a/src/core/options.ts +++ b/src/core/options.ts @@ -29,7 +29,7 @@ function normalizeResolvers(resolvers: (ComponentResolver | ComponentResolver[]) function resolveGlobsExclude(root: string, glob: string) { const excludeReg = /^!/ - return `${excludeReg.test(glob) ? '!' : ''}${resolve(root, glob.replace(excludeReg, ''))}` + return slash(`${excludeReg.test(glob) ? '!' : ''}${resolve(root, glob.replace(excludeReg, ''))}`) } export function resolveOptions(options: Options, root: string): ResolvedOptions { @@ -38,7 +38,7 @@ export function resolveOptions(options: Options, root: string): ResolvedOptions resolved.extensions = toArray(resolved.extensions) if (resolved.globs) { - resolved.globs = toArray(resolved.globs).map((glob: string) => slash(resolveGlobsExclude(root, glob))) + resolved.globs = toArray(resolved.globs).map((glob: string) => resolveGlobsExclude(root, glob)) resolved.resolvedDirs = [] } else { @@ -47,7 +47,7 @@ export function resolveOptions(options: Options, root: string): ResolvedOptions : `{${resolved.extensions.join(',')}}` resolved.dirs = toArray(resolved.dirs) - resolved.resolvedDirs = resolved.dirs.map(i => slash(resolveGlobsExclude(root, i))) + resolved.resolvedDirs = resolved.dirs.map(i => resolveGlobsExclude(root, i)) resolved.globs = resolved.resolvedDirs.map(i => resolved.deep ? slash(join(i, `**/*.${extsGlob}`)) @@ -59,7 +59,7 @@ export function resolveOptions(options: Options, root: string): ResolvedOptions } if (!resolved.globsExclude) - resolved.globsExclude = [`${root}/**/node_modules/**`] + resolved.globsExclude = [resolveGlobsExclude(root, `**/node_modules/**`)] resolved.dts = !resolved.dts ? false From 1fccbb82b70764310b660918cbd5076b1a7546e1 Mon Sep 17 00:00:00 2001 From: Anthony Fu Date: Wed, 19 Feb 2025 13:38:46 +0800 Subject: [PATCH 3/6] chore: update test --- test/search.test.ts | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/test/search.test.ts b/test/search.test.ts index e48bec4d..ed9abc1f 100644 --- a/test/search.test.ts +++ b/test/search.test.ts @@ -61,13 +61,15 @@ describe('search', () => { const ctx = new Context({ dirs: [ 'src/components', - '!src/components/book', + '!src/components/book/**', ], }) ctx.setRoot(root) ctx.searchGlob() - expect(cleanup(ctx.componentNameMap).map(i => i.as)).not.toEqual(expect.arrayContaining(['Book'])) + expect(cleanup(ctx.componentNameMap).map(i => i.as)) + .not + .contain('Book') }) it('should excludeNames', () => { From 0e48146246073b7cb956e867e7a5d9ddcb61a87d Mon Sep 17 00:00:00 2001 From: Anthony Fu Date: Wed, 19 Feb 2025 13:44:39 +0800 Subject: [PATCH 4/6] fix: try --- src/core/options.ts | 15 +++++++++++++-- src/types.ts | 1 + test/search.test.ts | 2 +- vitest.config.ts | 10 ++++++---- 4 files changed, 21 insertions(+), 7 deletions(-) diff --git a/src/core/options.ts b/src/core/options.ts index b0b194c3..d4cb95b7 100644 --- a/src/core/options.ts +++ b/src/core/options.ts @@ -38,7 +38,8 @@ export function resolveOptions(options: Options, root: string): ResolvedOptions resolved.extensions = toArray(resolved.extensions) if (resolved.globs) { - resolved.globs = toArray(resolved.globs).map((glob: string) => resolveGlobsExclude(root, glob)) + resolved.globs = toArray(resolved.globs) + .map(glob => resolveGlobsExclude(root, glob)) resolved.resolvedDirs = [] } else { @@ -59,7 +60,17 @@ export function resolveOptions(options: Options, root: string): ResolvedOptions } if (!resolved.globsExclude) - resolved.globsExclude = [resolveGlobsExclude(root, `**/node_modules/**`)] + resolved.globsExclude = [`**/node_modules/**`] + resolved.globsExclude = toArray(resolved.globsExclude || []) + .map(i => resolveGlobsExclude(root, i)) + + // Move negated globs to globsExclude + resolved.globs = resolved.globs.filter((i) => { + if (!i.startsWith('!')) + return true + resolved.globsExclude.push(i.slice(1)) + return false + }) resolved.dts = !resolved.dts ? false diff --git a/src/types.ts b/src/types.ts index 5de3c398..a7010bb4 100644 --- a/src/types.ts +++ b/src/types.ts @@ -209,6 +209,7 @@ export type ResolvedOptions = Omit< dirs: string[] resolvedDirs: string[] globs: string[] + globsExclude: string[] dts: string | false root: string } diff --git a/test/search.test.ts b/test/search.test.ts index ed9abc1f..28b9f90c 100644 --- a/test/search.test.ts +++ b/test/search.test.ts @@ -61,7 +61,7 @@ describe('search', () => { const ctx = new Context({ dirs: [ 'src/components', - '!src/components/book/**', + '!src/components/book', ], }) ctx.setRoot(root) diff --git a/vitest.config.ts b/vitest.config.ts index 637aa94f..93c91c41 100644 --- a/vitest.config.ts +++ b/vitest.config.ts @@ -2,10 +2,12 @@ import { defineConfig } from 'vite' export default defineConfig({ test: { - deps: { - inline: [ - '@babel/types', - ], + server: { + deps: { + inline: [ + '@babel/types', + ], + }, }, }, }) From dfc2c17090a261c86cbed024323834d02e019cc0 Mon Sep 17 00:00:00 2001 From: Anthony Fu Date: Wed, 19 Feb 2025 13:47:53 +0800 Subject: [PATCH 5/6] chore: add log --- test/search.test.ts | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/test/search.test.ts b/test/search.test.ts index 28b9f90c..6c85df06 100644 --- a/test/search.test.ts +++ b/test/search.test.ts @@ -1,5 +1,5 @@ import { relative, resolve } from 'pathe' -import { describe, expect, it } from 'vitest' +import { describe, expect, it, onTestFailed } from 'vitest' import { Context } from '../src/core/context' const root = resolve(__dirname, '../examples/vite-vue3') @@ -61,9 +61,15 @@ describe('search', () => { const ctx = new Context({ dirs: [ 'src/components', - '!src/components/book', + '!src/components/book/**', ], }) + + onTestFailed(() => { + console.error('resolved options') + console.error(ctx.options) + }) + ctx.setRoot(root) ctx.searchGlob() From bbdc15c27f029ebc64ce7661a6c4286e6cc2f3db Mon Sep 17 00:00:00 2001 From: Anthony Fu Date: Wed, 19 Feb 2025 13:52:48 +0800 Subject: [PATCH 6/6] chore: try --- src/core/options.ts | 18 +++++++++++++----- test/search.test.ts | 2 +- 2 files changed, 14 insertions(+), 6 deletions(-) diff --git a/src/core/options.ts b/src/core/options.ts index d4cb95b7..fa4b1ddb 100644 --- a/src/core/options.ts +++ b/src/core/options.ts @@ -48,12 +48,20 @@ export function resolveOptions(options: Options, root: string): ResolvedOptions : `{${resolved.extensions.join(',')}}` resolved.dirs = toArray(resolved.dirs) - resolved.resolvedDirs = resolved.dirs.map(i => resolveGlobsExclude(root, i)) - resolved.globs = resolved.resolvedDirs.map(i => resolved.deep - ? slash(join(i, `**/*.${extsGlob}`)) - : slash(join(i, `*.${extsGlob}`)), - ) + const globs = resolved.dirs.map(i => resolveGlobsExclude(root, i)) + + resolved.resolvedDirs = globs.filter(i => !i.startsWith('!')) + resolved.globs = globs.map((i) => { + let prefix = '' + if (i.startsWith('!')) { + prefix = '!' + i = i.slice(1) + } + return resolved.deep + ? prefix + slash(join(i, `**/*.${extsGlob}`)) + : prefix + slash(join(i, `*.${extsGlob}`)) + }) if (!resolved.extensions.length) throw new Error('[unplugin-vue-components] `extensions` option is required to search for components') diff --git a/test/search.test.ts b/test/search.test.ts index 6c85df06..3277da05 100644 --- a/test/search.test.ts +++ b/test/search.test.ts @@ -61,7 +61,7 @@ describe('search', () => { const ctx = new Context({ dirs: [ 'src/components', - '!src/components/book/**', + '!src/components/book', ], }) 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