defineNuxtPlugin
defineNuxtPlugin()은 Nuxt 플러그인을 생성하기 위한 헬퍼 함수입니다.
defineNuxtPlugin
은 향상된 기능과 타입 안전성을 갖춘 Nuxt 플러그인을 생성하기 위한 헬퍼 함수입니다. 이 유틸리티는 다양한 플러그인 형식을 Nuxt의 플러그인 시스템 내에서 원활하게 작동하는 일관된 구조로 정규화합니다.
plugins/hello.ts
export default defineNuxtPlugin((nuxtApp) => {
// Doing something with nuxtApp
})
Type
defineNuxtPlugin<T extends Record<string, unknown>>(plugin: Plugin<T> | ObjectPlugin<T>): Plugin<T> & ObjectPlugin<T>
type Plugin<T> = (nuxt: [NuxtApp](/docs/guide/going-further/internals#the-nuxtapp-interface)) => Promise<void> | Promise<{ provide?: T }> | void | { provide?: T }
interface ObjectPlugin<T> {
name?: string
enforce?: 'pre' | 'default' | 'post'
dependsOn?: string[]
order?: number
parallel?: boolean
setup?: Plugin<T>
hooks?: Partial<[RuntimeNuxtHooks](/docs/api/advanced/hooks#app-hooks-runtime)>
env?: {
islands?: boolean
}
}
Parameters
plugin: 플러그인은 두 가지 방법으로 정의할 수 있습니다:
- Function Plugin:
NuxtApp
인스턴스를 받아들이고,NuxtApp
인스턴스에 헬퍼를 제공하려는 경우provide
속성을 가진 객체를 포함할 수 있는 프라미스를 반환할 수 있는 함수입니다. - Object Plugin: 플러그인의 동작을 구성하기 위한 다양한 속성을 포함할 수 있는 객체로,
name
,enforce
,dependsOn
,order
,parallel
,setup
,hooks
,env
등이 있습니다.
Property | Type | Required | Description |
---|---|---|---|
name | string | false | 디버깅 및 종속성 관리를 위해 유용한 플러그인의 선택적 이름입니다. |
enforce | 'pre' | 'default' | 'post' | false | 다른 플러그인에 비해 플러그인이 실행되는 시점을 제어합니다. |
dependsOn | string[] | false | 이 플러그인이 의존하는 플러그인 이름의 배열입니다. 적절한 실행 순서를 보장합니다. |
order | number | false | 플러그인 순서에 대한 더 세밀한 제어를 허용하며, 고급 사용자만 사용해야 합니다. enforce 의 값을 무시하고 플러그인을 정렬하는 데 사용됩니다. |
parallel | boolean | false | 다른 병렬 플러그인과 함께 플러그인을 병렬로 실행할지 여부입니다. |
setup | Plugin<T> | false | 주요 플러그인 함수로, 함수 플러그인과 동일합니다. |
hooks | Partial<RuntimeNuxtHooks> | false | Nuxt 앱 런타임 훅을 직접 등록합니다. |
env | { islands?: boolean } | false | 서버 전용 또는 아일랜드 컴포넌트를 렌더링할 때 플러그인을 실행하지 않으려면 이 값을 false 로 설정합니다. |
Examples
Basic Usage
아래 예제는 글로벌 기능을 추가하는 간단한 플러그인을 보여줍니다:
plugins/hello.ts
export default defineNuxtPlugin((nuxtApp) => {
// Add a global method
return {
provide: {
hello: (name: string) => `Hello ${name}!`
}
}
})
Object Syntax Plugin
아래 예제는 고급 구성을 가진 객체 구문을 보여줍니다:
plugins/advanced.ts
export default defineNuxtPlugin({
name: 'my-plugin',
enforce: 'pre',
async setup (nuxtApp) {
// Plugin setup logic
const data = await $fetch('/api/config')
return {
provide: {
config: data
}
}
},
hooks: {
'app:created'() {
console.log('App created!')
}
},
})
※이 페이지는 Nuxt.js 공식 문서의 비공식 번역 페이지입니다.
공식 문서의 해당 페이지는 여기 있습니다:
https://nuxt.com/docs/3.x/api/utils/define-nuxt-plugin