Зависимости модулей
Объявление зависимостей от других модулей с ограничениями версий и слиянием конфигурации.
Если ваш модуль зависит от других, объявите их через moduleDependencies. Nuxt установит их в нужном порядке, проверит ограничения версий и сольёт переданную конфигурацию.
Базовое использование
import { createResolver, defineNuxtModule } from '@nuxt/kit'
const resolver = createResolver(import.meta.url)
export default defineNuxtModule<ModuleOptions>({
meta: {
name: 'my-module',
},
moduleDependencies: {
'@nuxtjs/tailwindcss': {
// Ограничение версии модуля
version: '>=6',
// Конфигурация поверх `nuxt.options`
overrides: {
exposeConfig: true,
},
// Конфигурация по умолчанию: перебивает дефолты модуля,
// но не то, что уже задано в `nuxt.options`
defaults: {
config: {
darkMode: 'class',
content: {
files: [
resolver.resolve('./runtime/components/**/*.{vue,mjs,ts}'),
resolver.resolve('./runtime/*.{mjs,js,ts}'),
],
},
},
},
},
},
setup (options, nuxt) {
// Подключаем CSS с директивами Tailwind
nuxt.options.css.push(resolver.resolve('./runtime/assets/styles.css'))
},
})
Опция
moduleDependencies заменяет устаревшую функцию installModule.Ключ каждой записи указывает модуль-зависимость: имя npm-пакета, путь к локальному модулю или алиас Nuxt вроде ~ или @.
Зависимость от локальных модулей
Если зависимость лежит в каталоге modules/, укажите путь к файлу:
import { defineNuxtModule } from '@nuxt/kit'
export default defineNuxtModule({
moduleDependencies: {
// Путь относительно корня проекта
'./modules/my-local-module': {},
// Или через алиас Nuxt
'~/modules/another-local-module': {},
},
// ...
})
Относительные пути разрешаются от
rootDir проекта, а не от файла с объявлением зависимости. Модуль в modules/foo.ts, который ссылается на modules/bar.ts, должен использовать './modules/bar', а не './bar'. Алиас вроде ~/modules/bar снимает эту неоднозначность.Опции
Каждая запись в moduleDependencies принимает поля:
version: диапазон semver. Если версия разрешённого модуля не попадает в диапазон, Nuxt выбросит ошибку. Проверка версии работает только когда зависимость разрешается вpackage.json; для локальных модулей проекта она не выполняется.overrides: конфигурация поверхnuxt.options, с приоритетом над пользовательской.defaults: конфигурация нижеnuxt.options. Пользовательская конфигурация важнее.optional: приtrueмодуль не устанавливается автоматически, если отсутствует.overridesиdefaultsвсё равно применяются, если модуль подключён отдельно.