Зависимости модулей

Объявление зависимостей от других модулей с ограничениями версий и слиянием конфигурации.

Если ваш модуль зависит от других, объявите их через 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 всё равно применяются, если модуль подключён отдельно.