defineNuxtPlugin

Source
Хелпер для создания Nuxt-плагинов.

defineNuxtPlugin — хелпер для создания Nuxt-плагинов с улучшенной типизацией. Приводит разные форматы плагинов к единой структуре, совместимой с системой плагинов Nuxt.

plugins/hello.ts
export default 
defineNuxtPlugin
((
nuxtApp
) => {
// Doing something with nuxtApp })
Узнать больше Docs > 4 X > Directory Structure > App > Plugins#creating Plugins.

Тип

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

type Plugin<T> = (nuxt: NuxtApp) => 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>
  env?: {
    islands?: boolean
  }
}

Параметры

plugin: плагин задаётся одним из двух способов:

  1. Функция: получает экземпляр NuxtApp, может вернуть объект с provide для добавления хелперов в NuxtApp.
  2. Объект: свойства name, enforce, dependsOn, order, parallel, setup, hooks, env для настройки поведения.
СвойствоТипОбязательныйОписание
namestringнетИмя плагина (отладка, зависимости).
enforce'pre' | 'default' | 'post'нетКогда выполнять плагин относительно других.
dependsOnstring[]нетИмена плагинов, от которых зависит этот. Задаёт порядок выполнения.
ordernumberнетТонкая настройка порядка. Переопределяет enforce при сортировке. Для продвинутых.
parallelbooleanнетВыполнять параллельно с другими помеченными плагинами.
setupPlugin<T>нетОсновная функция плагина (как при передаче функции).
hooksPartial<RuntimeNuxtHooks>нетХуки runtime Nuxt для регистрации.
env{ islands?: boolean }нетfalse — не запускать плагин при рендере server-only и island-компонентов.

Примеры

Базовое использование

Плагин с глобальным хелпером:

plugins/hello.ts
export default 
defineNuxtPlugin
((
nuxtApp
) => {
return {
provide
: {
hello
: (
name
: string) => `Hello ${
name
}!`,
}, } })

Плагин в виде объекта

Объектный синтаксис с расширенной настройкой:

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