Nuxt Nation カンファレンスが開催されます。11月12日~13日にご参加ください。
リリース·  

Nuxt 3.13

Nuxt 3.13 がリリースされました。Nuxt 4 向けに開発中の新機能の一部を移植しました!

🏘️ ルートグループ

パスに影響を与えることなくルートを整理するために、括弧/ブラケットでディレクトリに名前を付けることができるようになりました。

ディレクトリ構造
-| pages/
---| index.vue
---| (marketing)/
-----| about.vue
-----| contact.vue

これにより、アプリに //about および /contact ページが生成されます。 marketing グループは URL 構造の目的では無視されます。

元の PR で詳細をご覧ください。

🏝️ アイランドと Head メタデータ

サーバーコンポーネントアイランドが、レンダリング時に SEO メタデータを追加するなど、head を操作できるようになりました。

#27987 で詳細をご覧ください。

🪝 カスタムプリフェッチトリガー

NuxtLink のカスタムプリフェッチトリガーがサポートされるようになりました (#27846)。

pages/index.vue
<template>
  <div>
    <NuxtLink prefetch-on="interaction">
      This will prefetch when hovered or when it gains focus
    </NuxtLink>
    <!-- note that you probably don't want both enabled! -->
    <NuxtLink :prefetch-on="{ visibility: true, interaction: true }">
      This will prefetch when hovered/focus - or when it becomes visible
    </NuxtLink>
  </div>
</template>

アプリ全体でこれらをグローバルに有効/無効にしたり、リンクごとにオーバーライドしたりすることもできます。

nuxt.config.ts
export default defineNuxtConfig({
  experimental: {
    defaults: {
      nuxtLink: {
        prefetch: true,
        prefetchOn: { visibility: false, interaction: true }
      }
    }
  }
})

🗺️ 改善されたサーバーソースマップ

node --enable-source-maps を使用して実行した場合、サーバービルド内の Vue ファイルのソースマップが Vite ビルドの出力(.nuxt/dist/server/_nuxt/index-O15BBwZ3.js のようなもの)を指していることに気付いたかもしれません。

Nitro ビルド後でも、サーバーソースマップは元のソースファイル (#28521) を参照するようになります。

ビルドパフォーマンスを向上させる最も簡単な方法の 1 つは、ソースマップを使用していない場合にソースマップをオフにすることです。これは nuxt.config で簡単に行うことができます。

nuxt.config.ts
export default defineNuxtConfig({
  sourcemap: {
    server: false,
    client: true,
  },
})

🎁 モジュール作者向けの新機能

Nuxt v4 のリリースに向けて、モジュール作者向けのいくつかの重要な機能の追加に取り組んでいます。これには、必要な場合に isNuxtMajorVersion ユーティリティ (#27579) や、新しい defineNuxtModule().with() メソッド (#27520) を使用したマージされたモジュールオプションのより優れた推論型付けなどが含まれます。

✨ 改善された開発警告

ミドルウェアでデータフェッチ可能なコンポーザブルを使用しているときに警告が表示されなくなりました (#28604)。また、ユーザーコンポーネントの名前が Lazy で始まる場合に警告が表示されるようになりました (#27838)。

🚨 Vue TypeScript の変更

しばらくの間、Vue エコシステムでは、カスタムプロパティなどを vue に追加するために @vue/runtime-core を拡張してきました。ただし、これにより、vue を拡張するプロジェクトの型が意図せず壊れてしまいます。これは現在、これらのインターフェイスを拡張する正式に推奨され文書化された方法です(たとえば、ComponentCustomPropertiesGlobalComponentsなど)。

これは、すべてのライブラリがコードを更新する必要があることを意味します(そうしないと、代わりに vue を拡張するライブラリの型が壊れます)。

私たちは Nuxt の型をこれに従って更新しましたが、まだ更新されていないライブラリと一緒に使用すると、最新の vue-router で問題が発生する可能性があります。

再現可能な問題を作成してください。問題のアップストリームライブラリで解決するための PR を作成するお手伝いをさせていただきます。または、次のコードを使用してプロジェクトのルートに declarations.d.ts を作成することで問題を回避できる場合があります(クレジット@BobbieGoede)。

declarations.d.ts
import type {
  ComponentCustomOptions as _ComponentCustomOptions,
  ComponentCustomProperties as _ComponentCustomProperties,
} from 'vue';

declare module '@vue/runtime-core' {
  interface ComponentCustomProperties extends _ComponentCustomProperties {}
  interface ComponentCustomOptions extends _ComponentCustomOptions {}
}

✅ アップグレード

通常、アップグレードには次の実行をお勧めします。

npx nuxi@latest upgrade --force

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

完全なリリースノート

Nuxt v3.13.0 の完全なリリースノートをご覧ください。

このリリースに関わったすべての方々に心より感謝いたします。Nuxt を実現してくださったのは皆様です。❤️

フィードバックや問題がありましたら、お気軽にお知らせください。🙏

← ブログに戻る