Зависимости от других модулей
Объявляйте зависимости от других модулей с ограничениями версий и слиянием конфигурации.
Если ваш модуль зависит от других модулей, объявите их через опцию 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'. Алиас Nuxt вроде ~/modules/bar снимает эту неоднозначность.Опции
Каждая запись в moduleDependencies принимает следующие поля:
version: диапазон semver. Если версия разрешённого модуля не попадает в диапазон, Nuxt выбросит ошибку. Проверка версии выполняется только тогда, когда зависимость разрешается доpackage.json, поэтому для локальных модулей проекта она ничего не делает.overrides: конфигурация, применяемая поверхnuxt.optionsи имеющая приоритет над пользовательской конфигурацией.defaults: конфигурация, применяемая нижеnuxt.options. Пользовательская конфигурация имеет приоритет над ней.optional: приtrueмодуль не устанавливается автоматически, если он отсутствует. При этомoverridesиdefaultsвсё равно применяются, если модуль установлен где-то ещё.