nuxt logo

Traducción de Documentación

defineNuxtPlugin

defineNuxtPlugin() es una función auxiliar para crear plugins de Nuxt.

defineNuxtPlugin es una función auxiliar para crear plugins de Nuxt con funcionalidad mejorada y seguridad de tipos. Esta utilidad normaliza diferentes formatos de plugins en una estructura coherente que funciona sin problemas dentro del sistema de plugins de Nuxt.

plugins/hello.ts
export default defineNuxtPlugin((nuxtApp) => {
  // Haciendo algo con nuxtApp
})
Ver también guide > directory-structure > plugins#creating-plugins

Tipo

defineNuxtPlugin<T extends Record<string, unknown>>(plugin: Plugin<T> | ObjectPlugin<T>): Plugin<T> & ObjectPlugin<T>

type Plugin<T> = (nuxt: [NuxtApp](/docs/guide/going-further/internals#the-nuxtapp-interface)) => Promise<void> | Promise<{ provide?: T }> | void | { provide?: T }

interface ObjectPlugin<T> {
  name?: string
  enforce?: 'pre' | 'default' | 'post'
  dependsOn?: string[]
  order?: number
  parallel?: boolean
  setup?: Plugin<T>
  hooks?: Partial<[RuntimeNuxtHooks](/docs/api/advanced/hooks#app-hooks-runtime)>
  env?: {
    islands?: boolean
  }
}

Parámetros

plugin: Un plugin puede definirse de dos maneras:

  1. Function Plugin: Una función que recibe la instancia de NuxtApp y puede devolver una promesa con un objeto potencial con una propiedad provide si deseas proporcionar un helper en la instancia de NuxtApp.
  2. Object Plugin: Un objeto que puede incluir varias propiedades para configurar el comportamiento del plugin, como name, enforce, dependsOn, order, parallel, setup, hooks y env.
PropiedadTipoRequeridoDescripción
namestringfalseNombre opcional para el plugin, útil para depuración y gestión de dependencias.
enforce'pre' | 'default' | 'post'falseControla cuándo se ejecuta el plugin en relación con otros plugins.
dependsOnstring[]falseArray de nombres de plugins de los que depende este plugin. Asegura el orden de ejecución adecuado.
ordernumberfalseEsto permite un control más granular sobre el orden de los plugins y solo debe ser usado por usuarios avanzados. Sobrescribe el valor de enforce y se usa para ordenar los plugins.
parallelbooleanfalseIndica si se debe ejecutar el plugin en paralelo con otros plugins paralelos.
setupPlugin<T>{lang="ts"}falseLa función principal del plugin, equivalente a un plugin de función.
hooksPartial<RuntimeNuxtHooks>{lang="ts"}falseHooks de tiempo de ejecución de la aplicación Nuxt para registrar directamente.
env{ islands?: boolean }{lang="ts"}falseEstablece este valor en false si no deseas que el plugin se ejecute al renderizar componentes solo del servidor o de isla.

Ejemplos

Uso Básico

El siguiente ejemplo demuestra un plugin simple que agrega funcionalidad global:

plugins/hello.ts
export default defineNuxtPlugin((nuxtApp) => {
  // Agregar un método global
  return {
    provide: {
      hello: (name: string) => `Hello ${name}!`
    }
  }
})

Plugin con Sintaxis de Objeto

El siguiente ejemplo muestra la sintaxis de objeto con configuración avanzada:

plugins/advanced.ts
export default defineNuxtPlugin({
  name: 'my-plugin',
  enforce: 'pre',
  async setup (nuxtApp) {
    // Lógica de configuración del plugin
    const data = await $fetch('/api/config')
    
    return {
      provide: {
        config: data
      }
    }
  },
  hooks: {
    'app:created'() {
      console.log('¡App creada!')
    }
  },
})