mirror of
https://github.com/nuxt/nuxt.git
synced 2025-02-16 13:48:13 +00:00
feat(nuxt3): extends support for plugins/
directory (#3462)
This commit is contained in:
parent
717c5b185a
commit
13dd2b98ea
@ -8,6 +8,7 @@ const themeConfig = useRuntimeConfig().theme
|
||||
<pre>{{ JSON.stringify(themeConfig, null, 2) }}</pre>
|
||||
<BaseButton>Base Button</BaseButton>
|
||||
<FancyButton>Fancy Button</FancyButton>
|
||||
{{ $myPlugin() }}
|
||||
</NuxtExampleLayout>
|
||||
</template>
|
||||
|
||||
|
7
examples/config-extends/base/plugins/my-plugin.ts
Normal file
7
examples/config-extends/base/plugins/my-plugin.ts
Normal file
@ -0,0 +1,7 @@
|
||||
export default defineNuxtPlugin((/* nuxtApp */) => {
|
||||
return {
|
||||
provide: {
|
||||
myPlugin: () => 'String generated from my auto-imported plugin!'
|
||||
}
|
||||
}
|
||||
})
|
@ -37,6 +37,13 @@ export async function loadNuxtConfig (opts: LoadNuxtConfigOptions): Promise<Nuxt
|
||||
|
||||
nuxtConfig._nuxtConfigFile = configFile
|
||||
nuxtConfig._nuxtConfigFiles = [configFile]
|
||||
|
||||
// Resolve `rootDir` & `srcDir` of layers
|
||||
for (const layer of layers) {
|
||||
layer.config.rootDir = layer.config.rootDir ?? layer.cwd
|
||||
layer.config.srcDir = resolve(layer.config.rootDir, layer.config.srcDir)
|
||||
}
|
||||
|
||||
nuxtConfig._extends = layers
|
||||
|
||||
// Resolve and apply defaults
|
||||
|
@ -1,7 +1,7 @@
|
||||
import { promises as fsp } from 'fs'
|
||||
import { dirname, resolve } from 'pathe'
|
||||
import defu from 'defu'
|
||||
import type { Nuxt, NuxtApp } from '@nuxt/schema'
|
||||
import type { Nuxt, NuxtApp, NuxtPlugin } from '@nuxt/schema'
|
||||
import { findPath, resolveFiles, normalizePlugin, normalizeTemplate, compileTemplate, templateUtils } from '@nuxt/kit'
|
||||
|
||||
import * as defaultTemplates from './templates'
|
||||
@ -66,13 +66,15 @@ export async function resolveApp (nuxt: Nuxt, app: NuxtApp) {
|
||||
app.rootComponent = resolve(nuxt.options.appDir, 'components/nuxt-root.vue')
|
||||
|
||||
// Resolve plugins
|
||||
app.plugins = [
|
||||
...nuxt.options.plugins,
|
||||
...await resolveFiles(nuxt.options.srcDir, [
|
||||
'plugins/*.{ts,js,mjs,cjs,mts,cts}',
|
||||
'plugins/*/index.*{ts,js,mjs,cjs,mts,cts}'
|
||||
])
|
||||
].map(plugin => normalizePlugin(plugin))
|
||||
for (const config of [...nuxt.options._extends.map(layer => layer.config), nuxt.options]) {
|
||||
app.plugins.push(...[
|
||||
...config.plugins ?? [],
|
||||
...await resolveFiles(config.srcDir, [
|
||||
'plugins/*.{ts,js,mjs,cjs,mts,cts}',
|
||||
'plugins/*/index.*{ts,js,mjs,cjs,mts,cts}'
|
||||
])
|
||||
].map(plugin => normalizePlugin(plugin as NuxtPlugin)))
|
||||
}
|
||||
|
||||
// Extend app
|
||||
await nuxt.callHook('app:resolve', app)
|
||||
|
Loading…
Reference in New Issue
Block a user