版本 12
要升級到版本 12,請執行以下命令
npm i next@12 react@17 react-dom@17 eslint-config-next@12
yarn add next@12 react@17 react-dom@17 eslint-config-next@12
pnpm up next@12 react@17 react-dom@17 eslint-config-next@12
bun add next@12 react@17 react-dom@17 eslint-config-next@12
注意事項:如果您正在使用 TypeScript,請確保您也將
@types/react
和@types/react-dom
升級到其對應的版本。
升級到 12.2
中介軟體 - 如果您在 12.2
之前使用中介軟體,請參閱升級指南以了解更多資訊。
升級至 12.0
最低 Node.js 版本 - 最低 Node.js 版本已從 12.0.0
提升至 12.22.0
,這是第一個原生支援 ES 模組的 Node.js 版本。
最低 React 版本 - 最低要求的 React 版本為 17.0.2
。要升級,您可以在終端機中執行以下指令
npm install react@latest react-dom@latest
yarn add react@latest react-dom@latest
pnpm update react@latest react-dom@latest
bun add react@latest react-dom@latest
SWC 取代 Babel
Next.js 現在使用基於 Rust 的編譯器 SWC 來編譯 JavaScript/TypeScript。這個新的編譯器在編譯個別檔案時比 Babel 快 17 倍,快速重新整理 (Fast Refresh) 則快 5 倍。
Next.js 提供與具有自訂 Babel 設定的應用程式完全向下相容。所有 Next.js 預設處理的轉換,例如 styled-jsx 和 getStaticProps
/ getStaticPaths
/ getServerSideProps
的 Tree Shaking,都已移植到 Rust。
當應用程式具有自訂 Babel 設定時,Next.js 將自動停用使用 SWC 編譯 JavaScript/Typescript,並回退到使用 Babel,與在 Next.js 11 中的使用方式相同。
許多目前需要自訂 Babel 轉換的外部函式庫整合,將在不久的將來移植到基於 Rust 的 SWC 轉換。這些包括但不限於:
- Styled Components
- Emotion
- Relay
為了優先處理能幫助您採用 SWC 的轉換,請在這個意見回饋討論串上提供您的 .babelrc
。
SWC 取代 Terser 進行程式碼壓縮
您現在可以選擇使用 next.config.js
中的標記,將 Terser 替換為 SWC 來縮小 JavaScript,速度最高可提升 7 倍。
module.exports = {
swcMinify: true,
}
使用 SWC 進行縮小是一個選擇性標記,以確保在 Next.js 12.1 中成為預設值之前,可以在更多實際的 Next.js 應用程式中進行測試。如果您對縮小有任何意見回饋,請在此意見回饋串中留言。
styled-jsx CSS 解析的改進
除了基於 Rust 的編譯器之外,我們還基於 styled-jsx Babel 轉換所使用的 CSS 解析器,實作了一個新的 CSS 解析器。這個新的解析器改進了 CSS 的處理方式,現在在使用先前會被忽略並導致意外行為的無效 CSS 時會產生錯誤。
由於此變更,無效的 CSS 將在開發期間和 next build
過程中拋出錯誤。此變更僅影響 styled-jsx 的使用。
next/image
變更了包裝元素
這個有幫助嗎?