mirror of
https://github.com/nuxt/nuxt.git
synced 2024-11-22 13:45:18 +00:00
perf(nuxt)!: use component loader to add meta components (#8167)
Co-authored-by: Daniel Roe <daniel@roe.dev>
This commit is contained in:
parent
6ad0f3f157
commit
577573f3e8
@ -1,7 +1,9 @@
|
||||
import { resolve } from 'pathe'
|
||||
import { addPlugin, defineNuxtModule } from '@nuxt/kit'
|
||||
import { addComponent, addPlugin, defineNuxtModule } from '@nuxt/kit'
|
||||
import { distDir } from '../dirs'
|
||||
|
||||
const components = ['Script', 'NoScript', 'Link', 'Base', 'Title', 'Meta', 'Style', 'Head', 'Html', 'Body']
|
||||
|
||||
export default defineNuxtModule({
|
||||
meta: {
|
||||
name: 'meta'
|
||||
@ -15,8 +17,20 @@ export default defineNuxtModule({
|
||||
// Add #head alias
|
||||
nuxt.options.alias['#head'] = runtimeDir
|
||||
|
||||
// Add generic plugin
|
||||
addPlugin({ src: resolve(runtimeDir, 'plugin') })
|
||||
// Register components
|
||||
const componentsPath = resolve(runtimeDir, 'components')
|
||||
for (const componentName of components) {
|
||||
addComponent({
|
||||
name: componentName,
|
||||
filePath: componentsPath,
|
||||
export: componentName,
|
||||
// kebab case version of these tags is not valid
|
||||
kebabName: componentName
|
||||
})
|
||||
}
|
||||
|
||||
// Add mixin plugin
|
||||
addPlugin({ src: resolve(runtimeDir, 'mixin-plugin') })
|
||||
|
||||
// Add library specific plugin
|
||||
addPlugin({ src: resolve(runtimeDir, 'lib/vueuse-head.plugin') })
|
||||
|
@ -1,13 +1,7 @@
|
||||
import { getCurrentInstance } from 'vue'
|
||||
import * as Components from './components'
|
||||
import { useHead } from './composables'
|
||||
import { defineNuxtPlugin, useNuxtApp } from '#app'
|
||||
|
||||
type MetaComponents = typeof Components
|
||||
declare module '@vue/runtime-core' {
|
||||
export interface GlobalComponents extends MetaComponents {}
|
||||
}
|
||||
|
||||
const metaMixin = {
|
||||
created () {
|
||||
const instance = getCurrentInstance()
|
||||
@ -27,9 +21,4 @@ const metaMixin = {
|
||||
|
||||
export default defineNuxtPlugin((nuxtApp) => {
|
||||
nuxtApp.vueApp.mixin(metaMixin)
|
||||
|
||||
for (const name in Components) {
|
||||
// eslint-disable-next-line import/namespace
|
||||
nuxtApp.vueApp.component(name, (Components as any)[name])
|
||||
}
|
||||
})
|
Loading…
Reference in New Issue
Block a user