釋出·  

Nuxt 3.12

Nuxt 3.12 釋出了——充滿了改進,併為 Nuxt 4 鋪平了道路!
Daniel Roe

Daniel Roe

@danielroe.dev

我們正朝著 Nuxt 4 的釋出邁進,但我們在 Nuxt v3.12 中並未止步。

🚀 測試 Nuxt 4 的變化

Nuxt 4 即將到來,現在可以透過在你的 nuxt.config.ts 檔案中設定一個選項來測試下一個主要版本將帶來的行為變化(#26925

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

在合併 Nuxt 4 的 PR 時,我們一直在這些標記後面啟用它們。我們儘可能地爭取向後相容——我們的測試矩陣在 v3 和 v4 相容模式下執行相同的測試用例。

這裡有很多要說的,有 10 多個不同的 PR 和行為變化已被記錄和可測試,但要獲取包括遷移步驟在內的完整詳細資訊,請參閱v4 升級文件

我們非常感謝您對 Nuxt 4 即將到來的新功能進行早期測試!🙏

📜 Nuxt 指令碼自動安裝

我們一直在逐步努力釋出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).

👨‍👩‍👧‍👦 多應用支援

我們已經進行了一些更改,使我們朝著 Nuxt 本機支援多應用的方向邁進,包括一個 multiApp 實驗性標誌(#27291)以及在執行時並行執行多個 Nuxt 應用程式例項的能力(#27068).

雖然它尚未準備就緒,但請務必關注跟蹤問題,如果您對此感興趣,請隨時參與。

⛑️ 開發體驗提升

我們現在在您的開發伺服器日誌中序列化了更多內容,包括 VNodes(#27309)和URLs。我們還解決了可能導致開發伺服器凍結的錯誤。

當在瀏覽器中訪問私有執行時配置時,我們現在會提供更具資訊量的錯誤訊息通知您(#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)使用,以便它們可以對其進行增強。

這解鎖了更好的模組/型別化路由整合,但可能會帶來效能成本——如果您遇到任何問題,請提交問題。

💪 型別改進

我們現在支援伺服器元件中型別化的 #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

這也將重新整理你的 lockfile,並確保你拉取 Nuxt 依賴的其他依賴項(尤其是在 unjs 生態系統中)的更新。

完整發布說明

閱讀 Nuxt v3.12.0 的完整發行說明。

衷心感謝參與此次釋出的 75+ 位 Nuxt 貢獻者和社群成員。❤️

最後,感謝您閱讀到這裡!我們希望您喜歡 v3.12,如果您有任何反饋或問題,請告訴我們。🙏

祝您 Nuxting 愉快 ✨