リリース·  

Nuxt 3.12

Nuxt 3.12がリリースされました。多くの改善が施され、Nuxt 4への道筋が準備されています!
Daniel Roe

ダニエル・ロー

@danielroe.dev

Nuxt 4のリリースに向けて準備を進めていますが、Nuxt v3.12でも手を抜いていません。

🚀 Nuxt 4の変更点をテストする

Nuxt 4が間近に迫っており、次のメジャーリリースで導入される挙動の変更点を(#26925nuxt.config.tsファイルにオプションを設定することでテストできるようになりました。

nuxt.config.ts
export default defineNuxtConfig({
  future: {
    compatibilityVersion: 4,
  },
})

Nuxt 4のPRをマージする際に、このフラグの背後でそれらを有効にしてきました。可能な限り後方互換性を目指しており、テストマトリックスではv3とv4の互換性モードの両方で同じフィクスチャを実行しています。

10以上の異なるPRと挙動の変更が文書化され、テスト可能になっていますが、移行手順を含む詳細については、v4アップグレードドキュメントをご覧ください。

Nuxt 4で導入される変更点の早期テストにご協力いただければ幸いです! 🙏

📜 Nuxt Scriptsの自動インストール

私たちは、のリリースに向けて徐々に作業を進めています。Nuxt Scripts現在、パブリックプレビュー中ですが、パブリックリリースが間近に迫っているため、コンポーザブルのスタブを追加しました(使用すると@nuxt/scriptsモジュールのインストールを促します)。

👉 リリースと、さらに詳しい説明記事にご期待ください!

🌈 レイヤーの自動登録とバグ修正

~/modulesと同様に、プロジェクト内の~/layersディレクトリ内のすべてのレイヤーが、プロジェクト内で自動的にレイヤーとして登録されるようになりました(#27221).

また、レイヤーの依存関係が正しく読み込まれるようになり、モノレポやGitインストールにおけるさまざまな問題を解決できるはずです(#27338).

🌐 組み込みのアクセシビリティ改善

組み込みの<NuxtRouteAnnouncer>コンポーネントと対応するuseRouteAnnouncerコンポーザブルが追加され、今後新しいNuxtテンプレートにデフォルトで含まれるようになります。

詳細については、元のPR (#25741)ドキュメントをご覧ください。

nuxt/a11yの開発は継続しており、今後の情報にご期待ください!

🔥 パフォーマンス改善

いくつかのパフォーマンス改善も行われました。その多くはcompatibilityVersion: 4フラグの背後にあり、深くリアクティブなasyncDataペイロードからの脱却などが含まれます。

重要な改善点としては、モジュールの重複排除(#27475)があります。これは、レイヤーでモジュールを指定するレイヤーユーザーに主に適用されます。あるプロジェクトでは、Nuxtの起動時間が30秒以上改善されました。

また、一般的なESM依存関係をプレバンドルから除外することでVite開発サーバーの起動時間を改善しました。モジュール作者も同様の対応を検討することをお勧めします(#27372).

チャンクの決定性を改善したため、連続したビルドでチャンクハッシュが完全に異なる可能性が低くなりました(#27258).

さらに、サーバービルドからクライアント専用のコンポーザブルをより多くツリーシェイクし(#27044)、サーバーコンポーネントのペイロードサイズを削減しました(#26863).

👨‍👩‍👧‍👦 マルチアプリ対応

multiApp実験的フラグ(#27291)や、ランタイム時に複数のNuxtアプリインスタンスを並行して実行する機能(#27068).

)など、Nuxtでマルチアプリをネイティブにサポートするためのいくつかの変更を行いました。まだ準備段階ではありますが、トラッカーissueをフォローしてください。もし興味があれば、ぜひご協力ください。

⛑️ DXの向上

開発サーバーのログで、VNode(#27309)やURLなど、より多くのものがシリアル化されるようになりました。また、開発サーバーがフリーズする可能性のあるバグも修正しました。

ブラウザでプライベートランタイム設定にアクセスした場合、より詳細なエラーメッセージで通知するようになりました(#26441).

🪨 機能の安定化

安定化され、もはや設定可能である必要がないと判断した実験的なオプションの一部を削除しました

  • experimental.treeshakeClientOnly (v3.0.0以降デフォルトで有効)
  • experimental.configSchema (v3.3.0以降デフォルトで有効)
  • experimental.polyfillVueUseHead (v3.4.0以降無効) - ユーザーランドでプラグイン
  • experimental.respectNoSSRHeader (v3.4.0以降無効) - ユーザーランドでサーバーミドルウェア

また、scanPageMetaがデフォルトで有効になりました(#27134)。これにより、definePageMetaマクロ内のページメタデータが抽出され、モジュール(@nuxtjs/i18nなど)がそれを拡張できるようになります。

これにより、モジュールと型付きルーティングの統合がはるかに向上しますが、潜在的なパフォーマンスコストが発生する可能性があります。問題が発生した場合は、issueを提出してください。

💪 型の改善

サーバーコンポーネントにおける型付き#fallbackスロットのサポートが追加されました(#27097).

また、生成されるtsconfig.jsonのいくつかのデフォルトが改善されました。ローカルにTypeScript v5.4がインストールされている場合、module: 'preserve'が設定されるなどです(ドキュメントを参照)- 参照#26667, #27485.

📦 モジュール作成者/パワーユーザーの改善

モジュール作成者向けのさまざまな型改善が提供されました。以下が含まれます。

  • installModuleにおける型付きモジュールオプションのサポート(#26744)
  • モジュールオプションで特定のビルダー(vite/webpack)との互換性を指定するオプション(#27022)
  • ブラウザのハイドレーションサイクルにフックするための新しいonPrehydrateフック(#27037)
  • 新しいビルド時ユーティリティuseRuntimeConfigupdateRuntimeConfigを使って、モジュール内で解決済みのランタイム設定にアクセスし更新する機能(#27117)

🎨 インラインUIテンプレート

以前@nuxt/ui-templatesを使用していた方のために、それらが別のリポジトリからnuxt/nuxtモノレポに移動したことをお知らせします。(これは純粋なリファクタリングであり変更ではありませんが、Nuxt v4向けに新しいデザインが登場する予定です。)

✅ アップグレード

いつものように、アップグレードには以下を実行することをお勧めします。

npx nuxi@latest upgrade --force

これにより、ロックファイルも更新され、Nuxt が依存する他の依存関係、特に unjs エコシステムからの更新が取り込まれることが保証されます。

完全なリリースノート

Nuxt v3.12.0の完全なリリースノートを読む。

このリリースに参加してくださった75人以上のNuxt貢献者およびコミュニティメンバーに心から感謝いたします。❤️

最後に、ここまで読んでいただきありがとうございます!v3.12をお楽しみいただければ幸いです。ご意見や問題がございましたら、ぜひお知らせください。 🙏

ハッピーNuxting ✨