모듈
Nuxt Kit은 모듈을 생성하고 사용하는 데 도움이 되는 유틸리티 세트를 제공합니다. 이 유틸리티를 사용하여 자신만의 모듈을 만들거나 기존 모듈을 재사용할 수 있습니다.
모듈은 Nuxt의 구성 요소입니다. Kit은 모듈을 생성하고 사용하는 데 도움이 되는 유틸리티 세트를 제공합니다. 이 유틸리티를 사용하여 자신만의 모듈을 만들거나 기존 모듈을 재사용할 수 있습니다. 예를 들어, defineNuxtModule
함수를 사용하여 모듈을 정의하고 installModule
함수를 사용하여 프로그래밍 방식으로 모듈을 설치할 수 있습니다.
defineNuxtModule
Nuxt 모듈을 정의하여 기본값과 사용자가 제공한 옵션을 자동으로 병합하고, 제공된 훅을 설치하며, 전체 제어를 위한 선택적 설정 함수를 호출합니다.
사용법
import { defineNuxtModule } from '@nuxt/kit'
export default defineNuxtModule({
meta: {
name: 'my-module',
configKey: 'myModule'
},
defaults: {
enabled: true
},
setup (options) {
if (options.enabled) {
console.log('My Nuxt module is enabled!')
}
}
})
타입
// @errors: 2391
import type { ModuleDefinition, ModuleOptions, NuxtModule } from '@nuxt/schema'
// ---cut---
export function defineNuxtModule<TOptions extends ModuleOptions> (
definition?: ModuleDefinition<TOptions, Partial<TOptions>, false> | NuxtModule<TOptions, Partial<TOptions>, false>,
): NuxtModule<TOptions, TOptions, false>
매개변수
definition: 모듈 정의 객체 또는 모듈 함수. 모듈 정의 객체는 다음 속성을 포함해야 합니다:
속성 | 타입 | 필수 여부 | 설명 |
---|---|---|---|
meta | ModuleMeta | false | 모듈의 메타데이터. 모듈 이름, 버전, 구성 키 및 호환성을 정의합니다. |
defaults | T | ((nuxt: Nuxt) => T) | false | 모듈의 기본 옵션. 함수가 제공되면, Nuxt 인스턴스를 첫 번째 인수로 호출됩니다. |
schema | T | false | 모듈 옵션의 스키마. 제공되면, 옵션이 스키마에 적용됩니다. |
hooks | Partial<NuxtHooks> | false | 모듈에 설치할 훅. 제공되면, 모듈이 훅을 설치합니다. |
setup | (this: void, resolvedOptions: T, nuxt: Nuxt) => Awaitable<void | false | ModuleSetupInstallResult> | false | 모듈의 설정 함수. 제공되면, 모듈이 설정 함수를 호출합니다. |
예제
configKey
를 사용하여 모듈을 구성 가능하게 만들기
Nuxt 모듈을 정의할 때, 사용자가 nuxt.config
에서 모듈을 어떻게 구성해야 하는지를 지정하기 위해 configKey
를 설정할 수 있습니다.
import { defineNuxtModule } from '@nuxt/kit'
export default defineNuxtModule({
meta: {
name: 'my-module',
configKey: 'myModule'
},
defaults: {
// 모듈 옵션
enabled: true
},
setup (options) {
if (options.enabled) {
console.log('My Nuxt module is enabled!')
}
}
})
사용자는 nuxt.config
의 해당 키 아래에서 이 모듈에 대한 옵션을 제공할 수 있습니다.
export default defineNuxtConfig({
myModule: {
enabled: false
}
})
모듈 호환성 요구 사항 정의
특정 Nuxt 버전에서만 지원되는 API를 사용하는 Nuxt 모듈을 개발하는 경우, 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 Module @nuxt/icon is disabled due to incompatibility issues:
- [nuxt] Nuxt version ^3.1.0 is required but currently using 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)
매개변수
속성 | 타입 | 필수 여부 | 설명 |
---|---|---|---|
moduleToInstall | string | NuxtModule | true | 설치할 모듈. 모듈 이름의 문자열 또는 모듈 객체 자체일 수 있습니다. |
inlineOptions | any | false | 모듈의 setup 함수에 전달할 모듈 옵션을 가진 객체. |
nuxt | Nuxt | false | Nuxt 인스턴스. 제공되지 않으면, 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',
}
]
})
}
})
※이 페이지는 Nuxt.js 공식 문서의 비공식 번역 페이지입니다.
공식 문서의 해당 페이지는 여기 있습니다:
https://nuxt.com/docs/3.x/api/kit/modules