defineNuxtPlugin
Функция defineNuxtPlugin() — вспомогательная обёртка для создания плагинов Nuxt.
defineNuxtPlugin — вспомогательная функция для плагинов Nuxt с расширенными возможностями и типобезопасностью. Приводит разные форматы плагинов к единой структуре, совместимой с системой плагинов Nuxt.
plugins/hello.ts
export default defineNuxtPlugin((nuxtApp) => {
// работа с nuxtApp
})
Тип
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
}
}
declare function defineNuxtPlugin<T extends Record<string, unknown>> (
plugin: Plugin<T> | ObjectPlugin<T>,
): Plugin<T> & ObjectPlugin<T>
Параметры
plugin: плагин задаётся двумя способами:
- Плагин-функция: функция, получающая экземпляр
NuxtApp; может вернуть промис с объектом и полемprovide, чтобы передать воNuxtAppвспомогательные функции или другие значения. - Объектный плагин: объект с полями для настройки плагина:
name,enforce,dependsOn,order,parallel,setup,hooks,envи др.
| Свойство | Тип | Обязательно | Описание |
|---|---|---|---|
name | string | false | Необязательное имя плагина — удобно для отладки и управления зависимостями. |
enforce | 'pre' | 'default' | 'post' | false | Задаёт порядок запуска относительно других плагинов. |
dependsOn | string[] | false | Имена плагинов, от которых зависит этот; задаёт порядок выполнения. |
order | number | false | Точная сортировка плагинов; только для продвинутых сценариев. Переопределяет enforce при сортировке. |
parallel | boolean | false | Запускать ли плагин параллельно с другими помеченными как параллельные. |
setup | Plugin<T> | false | Основная функция плагина — эквивалент «функционального» плагина. |
hooks | Partial<RuntimeNuxtHooks> | false | Хуки runtime-приложения Nuxt для прямой регистрации. |
env | { islands?: boolean } | false | Укажите false, чтобы плагин не выполнялся при рендере только серверных или island-компонентов. |
Примеры
Базовое использование
Ниже — простой плагин, добавляющий глобальную функциональность:
plugins/hello.ts
export default defineNuxtPlugin((nuxtApp) => {
// глобальный метод
return {
provide: {
hello: (name: string) => `Привет, ${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('Приложение создано')
},
},
})