Turbopack
Turbopackは、JavaScriptとTypeScript向けに最適化されたインクリメンタルバンドラーで、Rustで書かれ、Next.jsに組み込まれています。
使用法
Turbopackは、Next.jsにおいてpages
ディレクトリとapp
ディレクトリの両方で使用可能で、ローカル開発を高速化します。Turbopackを有効にするには、Next.jsの開発サーバーを起動するときに--turbopack
フラグを使用します。
package.json
{
"scripts": {
"dev": "next dev --turbopack", // 開発サーバーをTurbopackモードで起動します
"build": "next build", // ビルド処理を実行します
"start": "next start", // ビルドされたアプリケーションを起動します
"lint": "next lint" // コードのリンティングを実行します
}
}
サポートされている機能
Next.jsのTurbopackは、ほとんどのユーザーに対して設定不要で使用でき、より高度なユースケースに合わせて拡張可能です。現在サポートされているTurbopackの機能について詳しく知りたい場合は、APIリファレンスを参照してください。
サポートされていない機能
現在、Turbopackはnext dev
のみをサポートし、next build
はサポートしていません。安定性の向上に向けてビルドサポートの作業を進めています。
現在サポートされていない機能は以下の通りです:
- Turbopackは、いくつかの使用率の低いCSS Modules機能をサポートしていないLightning 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ルール:import
および:export
ICSSルールは、Turbopackが使用するCSSパーサーであるLightning CSSがこれらのルールをサポートしていないため、現状ではTurbopackを使用したNext.jsでのサポートを予定していません。
- edge runtimeにおける
unstable_allowDynamic
設定
トレースファイルの生成
トレースファイルは、Next.jsチームがパフォーマンス指標とメモリ使用量を調査および改善するのに役立ちます。トレースファイルを生成するには、next dev --turbopack
コマンドの末尾にNEXT_TURBOPACK_TRACING=1
を追加します。これにより、.next/trace.log
ファイルが生成されます。
Turbopackのパフォーマンスとメモリ使用量に関連する問題を報告する際は、トレースファイルをGitHubのイシューに含めてください。