fix(module): scan layers when using component detection · nuxt/ui@9872740
@@ -65,7 +65,7 @@ function resolveComponentDependencies(
6565 * Detect components used in the project by scanning source files
6666 */
6767export async function detectUsedComponents(
68-rootDir: string,
68+dirs: string[],
6969prefix: string,
7070componentDir: string,
7171includeComponents?: string[]
@@ -79,33 +79,35 @@ export async function detectUsedComponents(
7979}
8080}
818182-// Scan all source files for component usage
83-const appFiles = globSync(['**/*.{vue,ts,js,tsx,jsx}'], {
84-cwd: rootDir,
85-ignore: ['node_modules/**', '.nuxt/**', 'dist/**']
86-})
87-8882// Pattern to match:
8983// - <UButton in templates
9084// - UButton in script (imports, usage)
9185// - <LazyUButton (lazy components)
9286// - LazyUButton in script
9387const componentPattern = new RegExp(`<(?:Lazy)?${prefix}([A-Z][a-zA-Z]+)|\\b(?:Lazy)?${prefix}([A-Z][a-zA-Z]+)\\b`, 'g')
948895-for (const file of appFiles) {
96-try {
97-const filePath = join(rootDir, file)
98-const content = await readFile(filePath, 'utf-8')
99-const matches = content.matchAll(componentPattern)
100-101-for (const match of matches) {
102-const componentName = match[1] || match[2]
103-if (componentName) {
104-detectedComponents.add(componentName)
89+// Scan all source files for component usage across all layers
90+for (const dir of dirs) {
91+const appFiles = globSync(['**/*.{vue,ts,js,tsx,jsx}'], {
92+cwd: dir,
93+ignore: ['node_modules/**', '.nuxt/**', 'dist/**']
94+})
95+96+for (const file of appFiles) {
97+try {
98+const filePath = join(dir, file)
99+const content = await readFile(filePath, 'utf-8')
100+const matches = content.matchAll(componentPattern)
101+102+for (const match of matches) {
103+const componentName = match[1] || match[2]
104+if (componentName) {
105+detectedComponents.add(componentName)
106+}
105107}
108+} catch {
109+// Ignore files that can't be read
106110}
107-} catch {
108-// Ignore files that can't be read
109111}
110112}
111113