Turbopack
Turbopackは、JavaScriptとTypeScriptに最適化されたインクリメンタルバンドラーで、Rustで書かれ、Next.jsに組み込まれています。Turbopackは、Next.jsのpages
ディレクトリとapp
ディレクトリの両方で使用でき、ローカル開発をより高速化します。
Turbopackを有効にするには、Next.jsの開発サーバーを実行する際に--turbopack
フラグを使用してください。
package.json
{
"scripts": {
"dev": "next dev --turbopack",
"build": "next build",
"start": "next start",
"lint": "next lint"
}
}
リファレンス
サポートされている機能
Next.jsのTurbopackは、ほとんどのユーザーに対してゼロコンフィギュレーションで動作し、より高度なユースケースに対して拡張可能です。Turbopackで現在サポートされている機能について詳しくは、APIリファレンスをご覧ください。
サポートされていない機能
Turbopackは現在、next dev
のみをサポートしており、next build
はサポートしていません。安定性に向けて進む中で、ビルドのサポートに取り組んでいます。
現在サポートされていない機能は以下のとおりです:
- TurbopackはLightning CSSを活用しており、一部の使用頻度の低いCSSモジュール機能をサポートしていません
- 独立した擬似クラスとしての
:local
と:global
。関数バリアントのみがサポートされています。例::global(a)
。 - CSS変数に置き換えられた@valueルール。
:import
と:export
のICSSルール。
- 独立した擬似クラスとしての
- 無効なCSSコメント構文(例:
//
)- CSSコメントは仕様に従って
/* comment */
と記述する必要があります。 - Sassなどのプリプロセッサは、この代替構文をサポートしています。
- CSSコメントは仕様に従って
next.config.js
内のwebpack()
設定- TurbopackはWebpackを置き換えるため、webpackの設定はサポートされていません。
- Turbopackを設定するには、ドキュメントを参照してください。
- Turbopackでは、Webpackローダーのサブセットがサポートされています。
- Babel (
.babelrc
)- Turbopackはすべてのトランスパイルと最適化にSWCコンパイラを活用しています。これにより、Babelはデフォルトで含まれていません。
.babelrc
ファイルがある場合、Next.jsには有効化できる一般的なBabelプラグインがSWC変換として含まれているため、もはや必要ないかもしれません。詳細はコンパイラドキュメントで確認できます。- 特定のユースケースがカバーされていないことを確認した後でBabelを使用する必要がある場合は、Turbopackのカスタムwebpackローダーのサポートを活用して
babel-loader
を含めることができます。
- App Routerでのroot レイアウトの自動作成
- この動作は現在サポートされていません。入力ファイルを変更するため、代わりにエラーが表示され、希望する場所に手動でroot レイアウトを追加するよう指示されます。
@next/font
(レガシーフォントサポート)@next/font
はnext/font
に置き換えられました。next/font
はTurbopackで完全にサポートされています。
- Relay変換
- 将来的に実装する予定です。
pages/_document.tsx
での.css
インポートのブロック- 現在、webpackを使用してNext.jsは
pages/_document.tsx
での.css
ファイルのインポートをブロックしています。 - 将来的にこの警告を実装する予定です。
- 現在、webpackを使用してNext.jsは
experimental.typedRoutes
- 将来的に実装する予定です。
experimental.nextScriptWorkers
- 将来的に実装する予定です。
experimental.sri.algorithm
- 将来的に実装する予定です。
experimental.fallbackNodePolyfills
- 将来的に実装する予定です。
experimental.esmExternals
- 現在、Turbopackを使用したNext.jsでのレガシーesmExternals設定をサポートする予定はありません。
- AMP
- 現在、Turbopackを使用したNext.jsでAMPをサポートする予定はありません。
- Yarn PnP
- 現在、Turbopackを使用したNext.jsでYarn PnPをサポートする予定はありません。
experimental.urlImports
- 現在、Turbopackを使用したNext.jsで
experimental.urlImports
をサポートする予定はありません。
- 現在、Turbopackを使用したNext.jsで
:import
と:export
のICSSルール- 現在、Turbopackが使用するCSSパーサーであるLightning CSSがこれらのルールをサポートしていないため、Next.jsで
:import
と:export
のICSSルールをサポートする予定はありません。
- 現在、Turbopackが使用するCSSパーサーであるLightning CSSがこれらのルールをサポートしていないため、Next.jsで
- edge runtimeでの
unstable_allowDynamic
設定
例
トレースファイルの生成
トレースファイルは、Next.jsチームがパフォーマンスメトリクスとメモリ使用量を調査し、改善するのに役立ちます。トレースファイルを生成するには、next dev --turbopack
コマンドにNEXT_TURBOPACK_TRACING=1
を追加します。これにより、.next/trace-turbopack
ファイルが生成されます。
Turbopackのパフォーマンスとメモリ使用量に関連する問題を報告する際は、トレースファイルをGitHubの問題に含めてください。