brand logo

ドキュメント

Nuxt Kit

@nuxt/kit はモジュール作成者向けの機能を提供します。

Nuxt Kit は、Nuxt HooksNuxt Interface とのやり取りや Nuxt Modules の開発を非常に簡単にするためのコンポーザブルなユーティリティを提供します。

こちらも参照 api > kit

使用方法

依存関係のインストール

package.jsondependencies セクションに追加することで、最新の Nuxt Kit をインストールできます。ただし、Nuxt によってすでにインストールされている場合でも、常に @nuxt/kit パッケージを明示的にインストールすることを検討してください。

@nuxt/kit@nuxt/schema は Nuxt の主要な依存関係です。別途インストールする場合は、@nuxt/kit@nuxt/schema のバージョンが nuxt のバージョン以上であることを確認して、予期しない動作を避けてください。

package.json
{
  "dependencies": {
    "@nuxt/kit": "npm:@nuxt/kit-nightly@latest"
  }
}

Kit ユーティリティのインポート

test.mjs
import { useNuxt } from '@nuxt/kit'
こちらも参照 api > kit

Nuxt Kit ユーティリティはモジュール専用であり、ランタイム(コンポーネント、Vue コンポーザブル、ページ、プラグイン、サーバールート)でインポートすることを意図していません。

Nuxt Kit は esm-only パッケージ であるため、require('@nuxt/kit') することは できません。代替策として、CommonJS コンテキストで動的インポートを使用してください。

test.cjs
// これは動作しません!
// const kit = require('@nuxt/kit')
async function main() {
  const kit = await import('@nuxt/kit')
}
main()

tips

このセクションは公式ドキュメントの翻訳ではなく、本サイト独自の補足記事です。

Nuxt Kitとは何か?〜モジュール開発の課題を解決するツールセット

Nuxt Kitは、Nuxtのモジュールやプラグインを開発する際に役立つ一連のユーティリティを提供するパッケージです。Nuxtのコア機能や内部APIとスムーズに連携できるよう設計されており、モジュール開発者が複雑な処理を自前で実装する手間を大幅に削減します。

モジュール開発は、Nuxtの拡張性を活かす上で重要ですが、内部APIの扱いやバージョン管理、依存関係の調整など、初心者にはハードルが高い部分も多いです。Nuxt Kitはこうした課題を解決し、より安全かつ効率的にモジュールを作成できる環境を提供します。


まず結論:Nuxt Kitのポイントまとめ

  • Nuxt Kitはモジュール開発専用のユーティリティ群であり、ランタイムコード(Vueコンポーネントやプラグイン)での使用は想定されていない
  • Nuxtの内部APIやフックを簡単に扱える関数や型定義を提供し、開発効率を大幅に向上させる
  • ESM専用パッケージのため、CommonJS環境では動的インポートが必要
  • バージョンの整合性が重要で、Nuxt本体のバージョン以上の@nuxt/kit@nuxt/schemaを使うべき
  • 依存関係に明示的に追加し、モジュールの安定動作を確保することが推奨される

いつ使うべきか?逆に使わない方がよいケース

Nuxt Kitを使うべきケース

  • Nuxtモジュールやカスタムビルドツールを作成するとき
  • Nuxtの内部APIやフックを利用して高度な拡張を行いたいとき
  • 型安全な開発を行い、将来的なNuxtのアップデートに強いコードを書きたいとき
  • 複雑な設定やビルド処理を自動化し、メンテナンス性を高めたいとき

Nuxt Kitを使わない方がよいケース

  • 通常のVueコンポーネントやページ、プラグインなどのランタイムコードを書く場合
  • 単純な設定変更や軽微なカスタマイズのみで済む場合
  • Nuxtの内部APIに依存しない純粋なJavaScript/TypeScriptコードを書く場合

実務でよくあるユースケースとサンプルコード

1. Nuxtモジュールのセットアップとフック利用

Nuxt KitのuseNuxtを使うと、モジュール内でNuxtのコンテキストにアクセスしやすくなります。これにより、設定の変更やフックの登録が簡単に行えます。

import { useNuxt } from '@nuxt/kit'

export default function MyModule() {
  const nuxt = useNuxt()

  nuxt.hook('build:before', () => {
    console.log('ビルド開始前の処理を実行')
  })

  nuxt.options.build.transpile.push('my-library')
}

2. 型安全なスキーマ定義と設定の拡張

@nuxt/schemaと組み合わせて使うことで、モジュールのオプションに型を付けて安全に扱えます。

import { defineNuxtModule } from '@nuxt/kit'

export interface ModuleOptions {
  greeting: string
}

export default defineNuxtModule<ModuleOptions>({
  meta: {
    name: 'my-module'
  },
  defaults: {
    greeting: 'Hello Nuxt Kit!'
  },
  setup(options, nuxt) {
    console.log(options.greeting)
  }
})

3. CommonJS環境での動的インポート

Node.jsのCommonJS環境でNuxt Kitを使う場合は、動的インポートを活用します。

async function loadKit() {
  const { useNuxt } = await import('@nuxt/kit')
  const nuxt = useNuxt()
  // ここからモジュール処理を続ける
}
loadKit()

よくある落とし穴・注意点

1. ランタイムコードでの誤用に注意

Nuxt Kitはモジュール開発専用のため、Vueコンポーネントやプラグインなどのランタイムコードでインポートすると動作しません。ビルド時にエラーになるか、意図しない挙動を引き起こすため注意が必要です。

2. バージョンの不整合によるトラブル

@nuxt/kit@nuxt/schemaはNuxt本体のバージョン以上を使うことが推奨されます。バージョンが合わないとAPIの変更によりエラーや不具合が発生しやすくなります。

3. SSRとHydrationの影響はないがビルド時依存

Nuxt Kitはビルド時のモジュール開発に特化しているため、SSRやHydrationのパフォーマンスには直接影響しません。ただし、モジュールのビルド処理が重くなると開発時のビルド時間が増加するため、処理の最適化は重要です。


まとめ

Nuxt KitはNuxtのモジュール開発を効率化し、内部APIを安全に扱うための強力なツールセットです。モジュール開発者にとっては必須のパッケージであり、正しく使うことで開発の生産性とコードの品質を大きく向上させられます。

ただし、ランタイムコードでの使用は避け、バージョン管理や依存関係の整合性に注意することが重要です。この記事で紹介したポイントやサンプルを参考に、Nuxt Kitを活用したモジュール開発にぜひ挑戦してみてください。