Плагины и middleware

Переход на формат плагинов и route middleware из Nuxt 3 в проекте с Nuxt Bridge.

Новый формат плагинов

Вы можете перейти на API плагинов Nuxt 3 — он слегка отличается от формата Nuxt 2.

Плагины теперь принимают только один аргумент (nuxtApp). Подробнее — в документации.

plugins/hello.ts
export default defineNuxtPlugin((nuxtApp) => {
  nuxtApp.provide('injected', () => 'моя внедряемая функция')
  // теперь доступен в `nuxtApp.$injected`
})
Если вы хотите использовать новые композаблы Nuxt (такие как useNuxtApp или useRuntimeConfig) в своих плагинах, для таких плагинов нужно использовать вспомогательную функцию defineNuxtPlugin.
Через nuxtApp.vueApp доступен интерфейс совместимости, но без своей логики однократной регистрации не стоит так подключать плагины, директивы, миксины и компоненты — иначе возможны повторные регистрации и утечки памяти.

Новый формат route middleware

Аналогично можно перейти на API route middleware Nuxt 3 — он слегка отличается от формата Nuxt 2.

Middleware теперь принимает только два аргумента (to, from). Подробнее — в документации.

export default defineNuxtRouteMiddleware((to) => {
  if (to.path !== '/') {
    return navigateTo('/')
  }
})
Использование defineNuxtRouteMiddleware вне директории middleware не поддерживается.

definePageMeta

Вы также можете использовать definePageMeta в Nuxt Bridge.

Это можно включить с помощью опции macros.pageMeta в вашем файле конфигурации.

nuxt.config.ts
import { defineNuxtConfig } from '@nuxt/bridge'

export default defineNuxtConfig({
  bridge: {
    macros: {
      pageMeta: true,
    },
  },
})
В Bridge через definePageMeta доступны в основном поля middleware и layout.