Nuxt Kit
@nuxt/kit はモジュール作成者向けの機能を提供します。
Nuxt Kit は、Nuxt Hooks、Nuxt Interface とのやり取りや Nuxt Modules の開発を非常に簡単にするためのコンポーザブルなユーティリティを提供します。
こちらも参照 api > kit使用方法
依存関係のインストール
package.json の dependencies セクションに追加することで、最新の Nuxt Kit をインストールできます。ただし、Nuxt によってすでにインストールされている場合でも、常に @nuxt/kit パッケージを明示的にインストールすることを検討してください。
@nuxt/kit と @nuxt/schema は Nuxt の主要な依存関係です。別途インストールする場合は、@nuxt/kit と @nuxt/schema のバージョンが nuxt のバージョン以上であることを確認して、予期しない動作を避けてください。
{
"dependencies": {
"@nuxt/kit": "npm:@nuxt/kit-nightly@latest"
}
}
Kit ユーティリティのインポート
import { useNuxt } from '@nuxt/kit'
Nuxt Kit ユーティリティはモジュール専用であり、ランタイム(コンポーネント、Vue コンポーザブル、ページ、プラグイン、サーバールート)でインポートすることを意図していません。
Nuxt Kit は esm-only パッケージ であるため、require('@nuxt/kit') することは できません。代替策として、CommonJS コンテキストで動的インポートを使用してください。
// これは動作しません!
// 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を活用したモジュール開発にぜひ挑戦してみてください。
※このページは Nuxt.js 公式ドキュメントの翻訳ページです。
公式ドキュメントの該当ページはこちら:
https://nuxt.com/docs/3.x/guide/going-further/kit