defineNuxtPlugin
defineNuxtPlugin() は Nuxt プラグインを作成するためのヘルパー関数です。
defineNuxtPlugin は、機能強化と型安全性を提供しつつ、Nuxt プラグインを作成するためのヘルパー関数です。このユーティリティは、さまざまなプラグイン形式を Nuxt のプラグインシステム内でシームレスに動作する一貫した構造に正規化します。
plugins/hello.ts
export default defineNuxtPlugin((nuxtApp) => {
// Doing something with nuxtApp
})
タイプ
署名
export function defineNuxtPlugin<T extends Record<string, unknown>> (plugin: Plugin<T> | ObjectPlugin<T>): Plugin<T> & ObjectPlugin<T>
type Plugin<T> = (nuxt: NuxtApp) => 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>
env?: {
islands?: boolean
}
}
パラメーター
プラグイン: プラグインは2つの方法で定義できます。
- 関数プラグイン:
NuxtAppインスタンスを受け取り、NuxtAppインスタンス上でヘルパーを提供したい場合は、provideプロパティを持つ可能性のあるオブジェクトを返すプロミスを返す関数です。 - オブジェクトプラグイン: プラグインの動作を設定するためのさまざまなプロパティを含めることができるオブジェクトです。これには、
name、enforce、dependsOn、order、parallel、setup、hooks、およびenvなどがあります。
| プロパティ | タイプ | 必須 | 説明 |
|---|---|---|---|
name | 文字列 | false | プラグインのオプション名。デバッグや依存関係の管理に役立ちます。 |
enforce | 'pre' | 'default' | 'post' | false | 他のプラグインとの相対的なプラグインの実行タイミングを制御します。 |
dependsOn | string[] | false | このプラグインが依存するプラグイン名の配列。適切な実行順序を保証します。 |
order | number | false | これにより、プラグインの順序をより詳細に制御できますが、上級ユーザーのみが使用すべきです。これは enforce の値を上書きし、プラグインのソートに使用されます。 |
parallel | ブール値 | false | 他の並列プラグインと並行してプラグインを実行するかどうか。 |
setup | Plugin<T> | false | メインのプラグイン関数。関数プラグインに相当します。 |
hooks | Partial<RuntimeNuxtHooks> | false | Nuxt アプリのランタイムフックを直接登録します。 |
env | { islands?: boolean } | false | サーバー専用コンポーネントまたはアイランドコンポーネントをレンダリングするときにプラグインを実行したくない場合は、この値を false に設定します。 |
例
基本的な使い方
以下の例は、グローバル機能を追加するシンプルなプラグインを示しています。
plugins/hello.ts
export default defineNuxtPlugin((nuxtApp) => {
// Add a global method
return {
provide: {
hello: (name: string) => `Hello ${name}!`,
},
}
})
オブジェクト構文プラグイン
以下の例は、高度な設定を持つオブジェクト構文を示しています。
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!')
},
},
})