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