nuxt logo

문서 번역(비공식)

defineNuxtPlugin

defineNuxtPlugin()은 Nuxt 플러그인을 생성하기 위한 헬퍼 함수입니다.

defineNuxtPlugin은 향상된 기능과 타입 안전성을 갖춘 Nuxt 플러그인을 생성하기 위한 헬퍼 함수입니다. 이 유틸리티는 다양한 플러그인 형식을 Nuxt의 플러그인 시스템 내에서 원활하게 작동하는 일관된 구조로 정규화합니다.

plugins/hello.ts
export default defineNuxtPlugin((nuxtApp) => {
  // Doing something with nuxtApp
})
이것도 참고 guide > directory-structure > plugins#creating-plugins

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: 플러그인은 두 가지 방법으로 정의할 수 있습니다:

  1. Function Plugin: NuxtApp 인스턴스를 받아들이고, NuxtApp 인스턴스에 헬퍼를 제공하려는 경우 provide 속성을 가진 객체를 포함할 수 있는 프라미스를 반환할 수 있는 함수입니다.
  2. Object Plugin: 플러그인의 동작을 구성하기 위한 다양한 속성을 포함할 수 있는 객체로, name, enforce, dependsOn, order, parallel, setup, hooks, env 등이 있습니다.
PropertyTypeRequiredDescription
namestringfalse디버깅 및 종속성 관리를 위해 유용한 플러그인의 선택적 이름입니다.
enforce'pre' | 'default' | 'post'false다른 플러그인에 비해 플러그인이 실행되는 시점을 제어합니다.
dependsOnstring[]false이 플러그인이 의존하는 플러그인 이름의 배열입니다. 적절한 실행 순서를 보장합니다.
ordernumberfalse플러그인 순서에 대한 더 세밀한 제어를 허용하며, 고급 사용자만 사용해야 합니다. enforce의 값을 무시하고 플러그인을 정렬하는 데 사용됩니다.
parallelbooleanfalse다른 병렬 플러그인과 함께 플러그인을 병렬로 실행할지 여부입니다.
setupPlugin<T>false주요 플러그인 함수로, 함수 플러그인과 동일합니다.
hooksPartial<RuntimeNuxtHooks>falseNuxt 앱 런타임 훅을 직접 등록합니다.
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!')
    }
  },
})