モジュール
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 モジュールを定義する際に、configKey
を設定して、ユーザーが nuxt.config
でモジュールをどのように設定するかを指定できます。
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 モジュールを開発していて、特定の Nuxt バージョンでのみサポートされている API を使用している場合、compatibility.nuxt
を含めることを強くお勧めします。
export default defineNuxtModule({
meta: {
name: '@nuxt/icon',
configKey: 'icon',
compatibility: {
// 必要な nuxt バージョン(semver 形式)。
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',
}
]
})
}
})