モジュール

Nuxt 2 から Nuxt 3 モジュールへの移行方法を学習します。

モジュールの互換性

Nuxt 3 には、@nuxt/kit の自動ラッパーを使用して Nuxt 2 モジュールに対する基本的な下位互換性レイヤーがあります。しかし、モジュールを Nuxt 3 と互換性を持たせるためには、通常、いくつかの手順を踏む必要があり、場合によってはクロスバージョン互換性のために Nuxt Bridge の使用が求められます。

@nuxt/kit を使用して Nuxt 3 対応モジュールを開発するための専用ガイドを用意しています。現在、最適な移行パスは、それに従ってモジュールを書き換えることです。このガイドの残りの部分では、完全な書き換えを避けつつモジュールを Nuxt 3 と互換性を持たせるための準備手順を説明します。

Nuxt 3 互換モジュールを探索します。

プラグインの互換性

Nuxt 3 プラグインは Nuxt 2 と完全に下位互換性がありません

Docs > 4 X > Guide > Directory Structure > Pluginsで詳細を読むことができます。

Vue の互換性

Composition API を使用するプラグインまたはコンポーネントは、Vue 2 または Vue 3 のどちらかに排他的に対応する必要があります。

を使用することでvue-demiNuxt 2 と 3 の両方と互換性があるはずです。

モジュールの移行

Nuxt 3 ユーザーがモジュールを追加しても、モジュールコンテナ(this.*)にアクセスできないため、コンテナ機能にアクセスするには @nuxt/kit からのユーティリティを使用する必要があります。

@nuxt/bridge でテスト

@nuxt/bridge への移行は、Nuxt 3 をサポートするための最初で最も重要なステップです。

モジュールにフィクスチャまたはサンプルがある場合は、設定に @nuxt/bridge パッケージを追加します(を参照)。

CommonJS から ESM への移行

Nuxt 3 は TypeScript と ECMAScript Modules をネイティブでサポートしています。詳細とアップグレードについては、ネイティブ ES モジュールを確認してください。

プラグインのデフォルトエクスポートの確認

export default がない Nuxt プラグイン(グローバル Vue プラグインなど)をインジェクトする場合は、最後に export default () => { } を追加してください。

// ~/plugins/vuelidate.js
import Vue from 'vue'
import Vuelidate from 'vuelidate'

Vue.use(Vuelidate)

ランタイムモジュールの回避

Nuxt 3 では、Nuxt はビルド時のみの依存関係となり、モジュールが Nuxt ランタイムにフックしようとすべきではありません。

モジュールは、modules ではなく)buildModules に追加するだけで機能するはずです。例:

  • Nuxt モジュール内で process.env を更新し、Nuxt プラグインで読み込むことは避けてください。代わりに runtimeConfig を使用してください。
  • (*) 本番環境では vue-renderer:* のようなランタイムフックへの依存を避けてください。
  • (*) モジュール内でインポートして serverMiddleware を追加することは避けてください。代わりに、ファイルパスを参照して追加することで、モジュールのコンテキストから独立させることができます。

(*) nuxt dev の目的のみで、if (nuxt.options.dev) { } で保護されている場合を除きます。

Nuxt 3 モジュールについては、モジュール開発者ガイドで引き続きお読みください。

TypeScript の使用 (任意)

必須ではありませんが、Nuxt エコシステムのほとんどが TypeScript の使用に移行しているため、移行を検討することを強くお勧めします。

.js ファイルの名前を .ts に変更することで移行を開始できます。TypeScript は漸進的に設計されています!
追加の依存関係なしに、Nuxt 2 および 3 モジュールとプラグインで TypeScript 構文を使用できます。