fix(nuxt): default scanned layer components to priority 0 (#23127)

This commit is contained in:
Daniel Roe 2023-09-11 19:17:42 +01:00 committed by GitHub
parent c045c4b154
commit 574102c523
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -42,20 +42,20 @@ export default defineNuxtModule<ComponentsOptions>({
: context.components : context.components
} }
const normalizeDirs = (dir: any, cwd: string): ComponentsDir[] => { const normalizeDirs = (dir: any, cwd: string, options?: { priority?: number }): ComponentsDir[] => {
if (Array.isArray(dir)) { if (Array.isArray(dir)) {
return dir.map(dir => normalizeDirs(dir, cwd)).flat().sort(compareDirByPathLength) return dir.map(dir => normalizeDirs(dir, cwd, options)).flat().sort(compareDirByPathLength)
} }
if (dir === true || dir === undefined) { if (dir === true || dir === undefined) {
return [ return [
{ path: resolve(cwd, 'components/islands'), island: true }, { priority: options?.priority || 0, path: resolve(cwd, 'components/islands'), island: true },
{ path: resolve(cwd, 'components/global'), global: true }, { priority: options?.priority || 0, path: resolve(cwd, 'components/global'), global: true },
{ path: resolve(cwd, 'components') } { priority: options?.priority || 0, path: resolve(cwd, 'components') }
] ]
} }
if (typeof dir === 'string') { if (typeof dir === 'string') {
return [ return [
{ path: resolve(cwd, resolveAlias(dir)) } { priority: options?.priority || 0, path: resolve(cwd, resolveAlias(dir)) }
] ]
} }
if (!dir) { if (!dir) {
@ -63,6 +63,7 @@ export default defineNuxtModule<ComponentsOptions>({
} }
const dirs: ComponentsDir[] = (dir.dirs || [dir]).map((dir: any): ComponentsDir => typeof dir === 'string' ? { path: dir } : dir).filter((_dir: ComponentsDir) => _dir.path) const dirs: ComponentsDir[] = (dir.dirs || [dir]).map((dir: any): ComponentsDir => typeof dir === 'string' ? { path: dir } : dir).filter((_dir: ComponentsDir) => _dir.path)
return dirs.map(_dir => ({ return dirs.map(_dir => ({
priority: options?.priority || 0,
..._dir, ..._dir,
path: resolve(cwd, resolveAlias(_dir.path)) path: resolve(cwd, resolveAlias(_dir.path))
})) }))
@ -72,7 +73,7 @@ export default defineNuxtModule<ComponentsOptions>({
nuxt.hook('app:resolve', async () => { nuxt.hook('app:resolve', async () => {
// components/ dirs from all layers // components/ dirs from all layers
const allDirs = nuxt.options._layers const allDirs = nuxt.options._layers
.map(layer => normalizeDirs(layer.config.components, layer.config.srcDir)) .map(layer => normalizeDirs(layer.config.components, layer.config.srcDir, { priority: layer.config.srcDir === nuxt.options.srcDir ? 1 : 0 }))
.flat() .flat()
await nuxt.callHook('components:dirs', allDirs) await nuxt.callHook('components:dirs', allDirs)