diff --git a/packages/nuxt/src/core/app.ts b/packages/nuxt/src/core/app.ts index 459c638a31..bb6b6e6925 100644 --- a/packages/nuxt/src/core/app.ts +++ b/packages/nuxt/src/core/app.ts @@ -126,9 +126,7 @@ async function resolveApp (nuxt: Nuxt, app: NuxtApp) { } // Resolve plugins, first extended layers and then base - app.plugins = [ - ...nuxt.options.plugins.map(normalizePlugin) - ] + app.plugins = [] for (const config of nuxt.options._layers.map(layer => layer.config).reverse()) { app.plugins.push(...[ ...(config.plugins || []), @@ -141,6 +139,14 @@ async function resolveApp (nuxt: Nuxt, app: NuxtApp) { ].map(plugin => normalizePlugin(plugin as NuxtPlugin))) } + // Add back plugins not specified in layers or user config + for (const p of nuxt.options.plugins) { + const plugin = normalizePlugin(p) + if (!app.plugins.some(p => p.src === plugin.src)) { + app.plugins.unshift(plugin) + } + } + // Normalize and de-duplicate plugins and middleware app.middleware = uniqueBy(await resolvePaths(app.middleware, 'path'), 'name') app.plugins = uniqueBy(await resolvePaths(app.plugins, 'src'), 'src')