모듈

Nuxt Kit은 모듈을 생성하고 사용할 수 있도록 도와주는 유틸리티 집합을 제공합니다. 이 유틸리티를 사용하여 직접 모듈을 만들거나 기존 모듈을 재사용할 수 있습니다.

모듈은 Nuxt의 구성 요소입니다. Kit은 모듈을 생성하고 사용할 수 있도록 도와주는 유틸리티 집합을 제공합니다. 이 유틸리티를 사용하여 직접 모듈을 만들거나 기존 모듈을 재사용할 수 있습니다. 예를 들어, defineNuxtModule 함수를 사용하여 모듈을 정의하고, installModule 함수를 사용하여 프로그래밍 방식으로 모듈을 설치할 수 있습니다.

defineNuxtModule

Nuxt 모듈을 정의하며, 기본값과 사용자가 제공한 옵션을 자동으로 병합하고, 제공된 후크를 설치하며, 전체 제어를 위한 선택적 setup 함수를 호출합니다.

사용법

import { defineNuxtModule } from '@nuxt/kit'

export default defineNuxtModule({
  meta: {
    name: 'my-module',
    configKey: 'myModule'
  },
  defaults: {
    enabled: true
  },
  setup (options) {
    if (options.enabled) {
      console.log('내 Nuxt 모듈이 활성화되었습니다!')
    }
  }
})

타입

export function defineNuxtModule<TOptions extends ModuleOptions> (
  definition?: ModuleDefinition<TOptions, Partial<TOptions>, false> | NuxtModule<TOptions, Partial<TOptions>, false>,
): NuxtModule<TOptions, TOptions, false>

매개변수

definition: 모듈 정의 객체 또는 모듈 함수입니다. 모듈 정의 객체는 다음 속성을 포함해야 합니다:

속성타입필수설명
metaModuleMetafalse모듈의 메타데이터입니다. 모듈 이름, 버전, config key, 호환성을 정의합니다.
defaultsT | ((nuxt: Nuxt) => T)false모듈의 기본 옵션입니다. 함수가 제공되면 Nuxt 인스턴스를 첫 번째 인자로 호출합니다.
schemaTfalse모듈 옵션의 스키마입니다. 제공되면 옵션이 스키마에 적용됩니다.
hooksPartial<NuxtHooks>false모듈에 설치할 후크입니다. 제공되면 모듈이 후크를 설치합니다.
setup(this: void, resolvedOptions: T, nuxt: Nuxt) => Awaitable<void | false | ModuleSetupInstallResult>false모듈의 setup 함수입니다. 제공되면 모듈이 setup 함수를 호출합니다.

예시

configKey를 사용하여 모듈을 설정 가능하게 만들기

Nuxt 모듈을 정의할 때, configKey를 설정하여 사용자가 nuxt.config에서 모듈을 어떻게 설정할지 지정할 수 있습니다.

import { defineNuxtModule } from '@nuxt/kit'

export default defineNuxtModule({
  meta: {
    name: 'my-module',
    configKey: 'myModule'
  },
  defaults: {
    // 모듈 옵션
    enabled: true
  },
  setup (options) {
    if (options.enabled) {
      console.log('내 Nuxt 모듈이 활성화되었습니다!')
    }
  }
})

사용자는 nuxt.config의 해당 키 아래에 이 모듈의 옵션을 제공할 수 있습니다.

export default defineNuxtConfig({
  myModule: {
    enabled: false
  }
})

모듈 호환성 요구사항 정의하기

Nuxt 모듈을 개발하면서 특정 Nuxt 버전에서만 지원되는 API를 사용하는 경우, compatibility.nuxt를 포함하는 것이 매우 권장됩니다.

export default defineNuxtModule({
  meta: {
    name: '@nuxt/icon',
    configKey: 'icon',
    compatibility: {
      // semver 형식의 필수 nuxt 버전
      nuxt: '>=3.0.0', // 또는 '^3.0.0' 사용
    },
  },
  async setup() {
    const resolver = createResolver(import.meta.url)
    // 구현
  },
})

사용자가 호환되지 않는 Nuxt 버전에서 모듈을 사용하려고 하면 콘솔에 경고가 표시됩니다.

 WARN  모듈 @nuxt/icon이(가) 호환성 문제로 인해 비활성화되었습니다:
 - [nuxt] Nuxt 버전 ^3.1.0이(가) 필요하지만 현재 3.0.0을(를) 사용 중입니다

installModule

지정된 Nuxt 모듈을 프로그래밍 방식으로 설치합니다. 이 기능은 모듈이 다른 모듈에 의존할 때 유용합니다. inlineOptions에 모듈 옵션을 객체로 전달하면 해당 옵션이 모듈의 setup 함수로 전달됩니다.

사용법

import { defineNuxtModule, installModule } from '@nuxt/kit'

export default defineNuxtModule({  
  async setup () {
    // Roboto 폰트와 Impact 폴백으로 @nuxtjs/fontaine을 설치합니다
    await installModule('@nuxtjs/fontaine', {
      // 모듈 설정
      fonts: [
        {
          family: 'Roboto',
          fallbacks: ['Impact'],
          fallbackName: 'fallback-a',
        }
      ]
    })
  }
})

타입

async function installModule (moduleToInstall: string | NuxtModule, inlineOptions?: any, nuxt?: Nuxt)

매개변수

속성타입필수설명
moduleToInstallstring | NuxtModuletrue설치할 모듈입니다. 모듈 이름의 문자열이거나 모듈 객체 자체일 수 있습니다.
inlineOptionsanyfalse모듈의 setup 함수로 전달할 모듈 옵션 객체입니다.
nuxtNuxtfalseNuxt 인스턴스입니다. 제공되지 않으면 useNuxt() 호출을 통해 컨텍스트에서 가져옵니다.

예시

import { defineNuxtModule, installModule } from '@nuxt/kit'

export default defineNuxtModule({  
  async setup (options, nuxt) {
    // Roboto 폰트와 Impact 폴백으로 @nuxtjs/fontaine을 설치합니다
    await installModule('@nuxtjs/fontaine', {
      // 모듈 설정
      fonts: [
        {
          family: 'Roboto',
          fallbacks: ['Impact'],
          fallbackName: 'fallback-a',
        }
      ]
    })
  }
})