✨ 本機模組開發 DX
我們進行了一系列變更,以啟用本機模組並改善 DX。
我們現在會自動掃描您的 ~/modules
資料夾,並將該處的頂層檔案註冊為您專案中的模組 (#19394)。
當這些檔案變更時,我們會自動重新啟動 nuxt 伺服器。
export default defineNuxtConfig({
modules: [
'@nuxtjs/tailwindcss',
- '~/modules/purge-comments'
]
})
我們現在也公開 nuxt/kit
,以便在您的本機專案中輕鬆存取 kit composables,而無需安裝 @nuxt/kit
(#19422)。
♻️ 重新啟動 Nuxt
您可以將檔案新增至 watch
陣列,以自動重新啟動伺服器 (#19530)。這對於模組作者來說可能特別有用。您也可以使用新的 restart
hook 來觸發 Nuxt 伺服器的重新啟動 (#19084)。
🔥 效能提升
我們已將靜態資產 maxAge 增加到 1 年,作為最佳實務做法 (#19335),並支援 tree-shaking 更多您的建置 (#19508)。
我們現在也支援使用物件語法預先載入帶有路由的 <NuxtLink>
(#19120)
<NuxtLink :to="{ name: 'home', query: { year: '2023' } }">Home</NuxtLink>
我們也會追蹤您使用的每個模組執行設定所需的時間,並在時間過長時發出警告。您可以透過執行帶有 DEBUG=1
的開發伺服器來查看所有這些值 (#18648)。
DEBUG=1 npx nuxt dev
ℹ Module pages took 1.5ms to setup.
ℹ Module meta took 3.15ms to setup
ℹ Module components took 4.5ms to setup.
...
您也可以選擇加入 Nuxt 的一些內部最佳化,方法是將 composables 設定為在特定環境中進行 treeshaken (#19383) 或自動注入 magic keys (#19490)。
🐛 錯誤處理
我們現在預設處理 chunk 錯誤 (#19086),這表示如果您的網站透過重新部署進行更新,**我們會自動處理在導覽時重新載入**。
若要停用此行為,請將 experimental.emitRouteChunkError
選項設定為 'manual'
,並使用新的 reloadNuxtApp
composable 自行處理。了解更多我們如何在 chunk-reload.client.ts plugin 中實作。
您也可以設定 experimental.restoreState
,以便在重新載入時保留應用程式的部分狀態
defineNuxtConfig({
experimental: {
restoreState: true
}
})
我們還有一個新的實驗性錯誤處理元件:<NuxtClientFallback>
(#8216),它可以在伺服器上擷取呈現錯誤,使用備用內容取代它們,並在客戶端上以細微方式觸發重新呈現發生錯誤的部分。可以使用 experimental.clientFallback
啟用此功能 - 非常歡迎提供回饋!
⚡️ Head 改善
我們已移轉為直接使用 unhead (#19519),並自動從您的客戶端建置中 tree-shake 僅限伺服器的 head composables,例如 useServerHead
(#19576),這表示您可以擁有優異的 SEO,而無需在您的客戶端建置中包含僅與網路爬蟲相關的中繼標籤邏輯。
還有一個新的 useHeadSafe
composable,可處理清理不受信任的使用者輸入 (#19548)。
🪵 在瀏覽器開發人員工具中進行更好的記錄
透過與 Chrome 開發人員工具團隊合作,我們在 unjs + Nuxt 生態系統中加入了一些功能,這表示我們現在在您的(目前為止基於 Chromium 的)瀏覽器中,對於從記錄中隱藏 Nuxt 內部堆疊追蹤擁有第一級支援 #19243。我們也針對涉及 Nuxt hooks 的堆疊追蹤進行了一些改善 (unjs/hookable#69 和 unjs/hookable#68) 實作 console.createTask
。
之前 | 之後 |
---|---|
![]() | ![]() |
💪 類型改善
伺服器 API 路由的類型現在更正確 - 傳回類型中會移除無法序列化的類型 (unjs/nitro#1002)。
我們現在也會為更多 NuxtApp
進行類型化,並正確為未知的注入類型化,以提高類型安全性 (#19643)。
如果您在使用 transform
+ default
和 Nuxt 資料擷取 composables 時,在正確類型方面遇到困難,請不用擔心 - 我們現在會正確推斷類型 (#19487)。
⚗️ Nitro 增強功能
此版本隨附 Nitro v2.3,它本身帶來許多改善。請查看版本以了解更多資訊。
我們現在支援在 nitro 伺服器路由中使用 useAppConfig
(#19489) - 這是一個期待已久的變更。現在,useAppConfig
在整個應用程式中都可一致使用,以進行來自圖層、模組等的非執行階段組態設定。
我們也新增了 nitro:build:public-assets
hook,以允許修改來自 nitro 預先呈現/建置階段的資產輸出 (#19638)。
🛠️ 建置變更
作為朝向對 PNP 和 pnpm 支援的第一級支援,而無需 --shamefully-hoist
的一部分,我們已停止支援使用 CJS 解析模式的某些內部(已棄用)公用程式 (#19537 和 #19608)。
我們現在也使用 ESM 搜尋路徑解析 nuxt
、@nuxt/kit
等相依性。我們會密切關注此情況。
我們也在準備支援新的 TypeScript Node16 模組解析 (#19606) 的基礎,作為此準備工作的一部分,我們已變更執行階段輸出的格式(使用 .js
而不是 .mjs
副檔名、為子路徑匯出提供 types
欄位等等)。
🗺️ 自訂組態結構描述(進階)
我們一直在測試一個實驗性功能,以允許模組和使用者擴充 Nuxt 組態結構描述 (#15592),而我們現在已預設啟用此功能 (#19172)。我們預期這對模組和圖層/佈景主題作者特別有用,並且應該為其使用者帶來一些更完善的 DX。
變更日誌
透過比較變更來查看完整的變更日誌,或在 GitHub 上查看版本。
我們要感謝在此版本中提供協助的 28 位貢獻者 💚