舞台裏では、Nuxt v4 のリリース(特に Nitro v3 の準備を含む unjs
側)に向けて多くのことが進められてきました!
⚡️ jiti
による高速な起動
nuxt 設定ファイル、モジュール、その他のビルド時コードの読み込みは、jiti
v2 によって処理されるようになりました。jiti v2 リリースノートで詳細をご確認いただけますが、最も重要な点は、ネイティブな Node ESM インポート(可能な場合)であり、起動が高速化されるはずです。✨
📂 クライアント/サーバー間で共有されるコードと型のための共有フォルダ
Vue アプリのコードを nitro コードにインポートしたり、その逆を行ったりすることは絶対に避けるべきです。しかし、これは nitro/vue コンテキストに依存しない型やユーティリティを共有する際の摩擦点となっていました。
このために、新しい shared/
フォルダ (#28682) が追加されました。このフォルダ内のファイルに Vue や nitro コードをインポートすることはできませんが、アプリ全体で使用できる自動インポートが生成されます。
必要な場合は、このフォルダを指す新しい #shared
エイリアスを使用できます。
共有フォルダは、server/
フォルダの横にあります。(compatibilityVersion: 4
を使用している場合、これは app/
フォルダ内にはありません。)
🦀 rspack
ビルダー
rspack
用の新しいファーストクラスの Nuxt ビルダーを発表できることを嬉しく思います。まだ実験段階ですが、これを実現するために、内部の Nuxt 仮想ファイルシステムを unplugin
を使用するようにリファクタリングしました。
気に入っていただけたらお知らせください。また、発生した問題があればお気軽にご報告ください。
👉 お試しいただくには、このスターターをご利用いただくか、@nuxt/rspack-builder
をインストールし、nuxt 設定ファイルで builder: 'rspack'
を設定してください。
✨ 新しい composables
新しい useResponseHeader
および useRuntimeHook
composables が追加されました (#27131 および #29741)。
🔧 新しいモジュールユーティリティ
nitro ランタイムルート内からアクセスするための仮想ファイルを追加するための新しい addServerTemplate
ユーティリティ (#29320) が追加されました。
🚧 v4 の変更点
compatibilityVersion: 4
の場合にのみ有効になるいくつかの変更をマージしましたが、早期にオプトインすることもできます。
- 以前は、
~/components/App/Header.vue
のようなコンポーネントがある場合、devtools には<Header>
として表示されていました。v4 からは、これを<AppHeader>
にすることを保証しますが、手動で実装した<KeepAlive>
を壊さないようにオプトイン制にしています。( #28745)。 - Nuxt は
pages:extend
を呼び出す前にファイルからページメタデータをスキャンします。しかし、これにより、この時点で追加されたページはページメタデータが尊重されないという、混乱を招くような動作が発生していました。そこで、pages:extend
を呼び出す前にメタデータをスキャンしないようにしました。代わりに、pages:extend
の後、すべてのページがメタデータで拡張された後に呼び出される新しいpages:resolved
フックを用意しました。experimental.scanPageMeta
をafter-resolve
に設定して、これにオプトインすることをお勧めします。これにより、多くのバグが解決されます。
🗺️ v3.15 へのロードマップ
v3.14 に間に合いませんでしたが、次のマイナーリリースでは(とりわけ)以下が期待できます。
✅ アップグレード
通常どおり、アップグレードには次のコマンドを実行することをお勧めします。
npx nuxi@latest upgrade --force
これにより、ロックファイルも更新され、Nuxt が依存している他の依存関係(特に unjs エコシステム)からの更新が確実に取得されます。
完全なリリースノート
このリリースにご参加いただいた皆様に心より感謝申し上げます。次のリリースに向けてエキサイティングなことを企画しています! ❤️
フィードバックや問題があれば、遠慮なくお知らせください! 🙏