modules

Каталог modules/ — локальные модули Nuxt с автоматической регистрацией.

Это место для размещения любых локальных модулей, которые вы разрабатываете при создании приложения.

Поддерживаются такие шаблоны путей к локальным модулям:

  • modules/*/index.ts
  • modules/*.ts

Их не нужно отдельно перечислять в nuxt.config.ts.

// `nuxt/kit` — это хелпер для импорта подпути, который можно использовать при определении локальных модулей
// это означает, что вам не нужно добавлять `@nuxt/kit` в зависимости вашего проекта
import { addComponentsDir, addServerHandler, createResolver, defineNuxtModule } from 'nuxt/kit'

export default defineNuxtModule({
  meta: {
    name: 'hello',
  },
  setup () {
    const resolver = createResolver(import.meta.url)

    // Добавление роута API
    addServerHandler({
      route: '/api/hello',
      handler: resolver.resolve('./runtime/api-route'),
    })

    // Добавление директории компонентов
    addComponentsDir({
      path: resolver.resolve('./runtime/app/components'),
      pathPrefix: true, // префикс экспортов, чтобы избежать конфликтов с кодом пользователя или другими модулями
    })
  },
})

При запуске Nuxt будет зарегистрирован модуль hello и станет доступен маршрут /api/hello.

Все компоненты, страницы, композаблы и прочие файлы, которые обычно лежат в app/, для модуля нужно размещать в modules/your-module/runtime/app/. Так они корректно проходят проверку типов.

Модули выполняются в следующей последовательности:

  • Сначала загружаются модули, указанные в nuxt.config.ts.
  • Затем выполняются модули, найденные в директории modules/, и они загружаются в алфавитном порядке.

Вы можете изменить порядок локальных модулей, добавив номер в начало имени каждой директории:

Directory structure
modules/
  1.first-module/
    index.ts
  2.second-module.ts
Узнать больше Docs > 3 X > Guide > Modules.
Посмотрите видео от Vue School о закрытых модулях Nuxt.