turbo (實驗性功能)
Turbopack 可自訂以轉換不同檔案並變更模組解析方式。
須知事項:
- 這些功能屬於實驗性質,僅在執行
next --turbo
時有效。- Next.js 的 Turbopack 對於內建功能不需要載入器 (loader) 或載入器設定。Turbopack 內建支援 CSS 和現代 JavaScript 編譯,因此如果您使用
@babel/preset-env
,則不需要css-loader
、postcss-loader
或babel-loader
。
webpack 載入器
若您需要的載入器功能超出內建支援範圍,許多 webpack 載入器已可與 Turbopack 相容。目前存在以下限制:
- 僅實作了 webpack 載入器 API 的核心子集。目前已有足夠覆蓋率支援部分熱門載入器,我們將在未來擴展 API 支援。
- 僅支援回傳 JavaScript 程式碼的載入器。目前不支援轉換檔案 (如樣式表或圖片) 的載入器。
- 傳遞給 webpack 載入器的選項必須是純 JavaScript 基本型別、物件和陣列。例如,無法將
require()
的插件模組作為選項值傳遞。
要設定載入器,請在 next.config.js
中新增已安裝的載入器名稱和任何選項,將副檔名對應至載入器清單:
須知事項:在 Next.js 13.4.4 版之前,
experimental.turbo.rules
名為experimental.turbo.loaders
,且僅接受.mdx
等副檔名而非*.mdx
。
支援的載入器
以下載入器經測試可與 Turbopack 的 webpack 載入器實作相容:
babel-loader
@svgr/webpack
svg-inline-loader
yaml-loader
string-replace-loader
raw-loader
- 'sass-loader'
解析別名
透過 next.config.js
,可設定 Turbopack 透過別名修改模組解析方式,類似 webpack 的 resolve.alias
設定。
要設定解析別名,請在 next.config.js
中將匯入模式對應至新目的地:
此設定將 underscore
套件的匯入別名為 lodash
套件。換言之,import underscore from 'underscore'
將載入 lodash
模組而非 underscore
。
Turbopack 也透過此欄位支援條件式別名,類似 Node.js 的 條件式匯出。目前僅支援 browser
條件。在上述範例中,當 Turbopack 目標為瀏覽器環境時,mocha
模組的匯入將被別名為 mocha/browser-entry.js
。
解析副檔名
透過 next.config.js
,可設定 Turbopack 使用自訂副檔名解析模組,類似 webpack 的 resolve.extensions
設定。
要設定解析副檔名,請在 next.config.js
中使用 resolveExtensions
欄位:
此設定將以提供的清單覆寫原始解析副檔名。請確保包含預設副檔名。
有關如何從 webpack 遷移至 Turbopack 的更多資訊和指引,請參閱 Turbopack 的 webpack 相容性文件。