modules
Директория modules/ служит для автоматической регистрации локальных модулей в приложении.
Здесь удобно размещать локальные модули, которые вы пишете при разработке приложения.
Шаблоны файлов для авторегистрации:
modules/*/index.tsmodules/*.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, // префикс экспортов, чтобы не конфликтовать с кодом пользователя и другими модулями
})
},
})
export default defineEventHandler(() => {
return { hello: 'world' }
})
При запуске 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