defineNuxtPlugin
defineNuxtPlugin() は Nuxt プラグインを作成するためのヘルパー関数です。
defineNuxtPlugin
は、機能強化と型安全性を備えた Nuxt プラグインを作成するためのヘルパー関数です。このユーティリティは、異なるプラグイン形式を Nuxt のプラグインシステム内でシームレスに動作する一貫した構造に正規化します。
plugins/hello.ts
export default defineNuxtPlugin((nuxtApp) => {
// Doing something with nuxtApp
})
型
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
}
}
パラメータ
plugin: プラグインは次の2つの方法で定義できます:
- 関数プラグイン:
NuxtApp
インスタンスを受け取り、NuxtApp
インスタンス上でヘルパーを提供したい場合にprovide
プロパティを持つ可能性のあるオブジェクトを含むプロミスを返すことができる関数。 - オブジェクトプラグイン: プラグインの動作を設定するための
name
、enforce
、dependsOn
、order
、parallel
、setup
、hooks
、env
などのさまざまなプロパティを含むことができるオブジェクト。
プロパティ | 型 | 必須 | 説明 |
---|---|---|---|
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 に設定します。 |
例
基本的な使用法
以下の例は、グローバルな機能を追加するシンプルなプラグインを示しています:
plugins/hello.ts
export default defineNuxtPlugin((nuxtApp) => {
// グローバルメソッドを追加
return {
provide: {
hello: (name: string) => `Hello ${name}!`
}
}
})
オブジェクト構文プラグイン
以下の例は、高度な設定を持つオブジェクト構文を示しています:
plugins/advanced.ts
export default defineNuxtPlugin({
name: 'my-plugin',
enforce: 'pre',
async setup (nuxtApp) {
// プラグインのセットアップロジック
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