turbo
turbo
オプションを使用すると、Turbopackをカスタマイズして、異なるファイルを変換し、モジュールの解決方法を変更できます。
補足:
- Next.jsのTurbopackは、組み込み機能のためのローダーやローダー設定を必要としません。Turbopackには、CSSのサポートと最新のJavaScriptのコンパイルが組み込まれているため、
@babel/preset-env
を使用している場合、css-loader
、postcss-loader
、babel-loader
は不要です。
リファレンス
オプション
turbo
設定で利用可能なオプションは次のとおりです:
オプション | 説明 |
---|---|
rules | Turbopackで実行する際に適用する、サポートされていないwebpackローダーのリスト。 |
resolveAlias | エイリアス化されたインポートを、代わりにロードするモジュールにマッピングします。 |
resolveExtensions | ファイルをインポートする際に解決する拡張子のリスト。 |
moduleIdStrategy | モジュールIDを割り当てます。 |
useSwcCss | Turbopackでlightningcss の代わりにswc_css を使用します。 |
treeshaking | Turbopackの開発サーバーとビルドのツリーシェイキングを有効にします。 |
memoryLimit | ターボ用のターゲットメモリ制限(バイト単位)。 |
サポートされているローダー
次のローダーはTurbopackのwebpackローダー実装で動作することがテストされています:
babel-loader
@svgr/webpack
svg-inline-loader
yaml-loader
string-replace-loader
raw-loader
sass-loader
例
webpackローダーの設定
組み込みのものを超えるローダーサポートが必要な場合、多くのwebpackローダーは既にTurbopackで動作します。現時点では、いくつかの制限があります:
- webpackローダーAPIのコア部分のみが実装されています。現在、いくつかの人気のあるローダーに十分な対応がありますが、今後APIサポートを拡大する予定です。
- JavaScriptコードを返すローダーのみがサポートされています。スタイルシートや画像などのファイルを変換するローダーは現在サポートされていません。
- webpackローダーに渡されるオプションは、プレーンなJavaScriptのプリミティブ、オブジェクト、配列である必要があります。例えば、オプション値として
require()
プラグインモジュールを渡すことはできません。
ローダーを設定するには、インストールしたローダーの名前と任意のオプションをnext.config.js
に追加し、ファイル拡張子をローダーのリストにマッピングします:
補足: Next.js version 13.4.4より前は、
turbo.rules
はturbo.loaders
という名前で、.mdx
のようなファイル拡張子のみを受け入れていました。
エイリアスの解決
Turbopackは、webpack の resolve.alias
設定に似た、エイリアスを通じてモジュール解決を変更するように設定できます。
エイリアスを解決するには、next.config.js
でインポートパターンを新しい宛先にマッピングします:
これにより、underscore
パッケージのインポートがlodash
パッケージにエイリアス化されます。つまり、import underscore from 'underscore'
はunderscore
ではなくlodash
モジュールをロードします。
Turbopackは、Node.jsの条件付きエクスポートに似た、この項目を通じて条件付きエイリアスもサポートしています。現時点ではbrowser
条件のみがサポートされています。上記の場合、TurbopackがブラウザEnvironmentをターゲットにする際、mocha
モジュールのインポートはmocha/browser-entry.js
にエイリアス化されます。
カスタム拡張子の解決
Turbopackは、webpack の resolve.extensions
設定に似た、カスタム拡張子を持つモジュールを解決するように設定できます。
拡張子を解決するには、next.config.js
のresolveExtensions
フィールドを使用します:
これにより、提供されたリストで元の解決拡張子が上書きされます。デフォルトの拡張子を必ず含めてください。
アプリをwebpackからTurbopackに移行する方法の詳細とガイダンスについては、Turbopackのwebpack互換性に関するドキュメントをご覧ください。
モジュールIDの割り当て
Turbopackは現在、モジュールIDを割り当てるための2つの戦略をサポートしています:
'named'
は、モジュールのパスと機能に基づいて読みやすいモジュールIDを割り当てます。'deterministic'
は、ビルド間でほぼ一貫性があり、長期キャッシュに役立つ、小さなハッシュ化された数値モジュールIDを割り当てます。
設定しない場合、Turbopackは開発ビルドでは'named'
を、本番ビルドでは'deterministic'
を使用します。
モジュールIDの戦略を設定するには、next.config.js
のmoduleIdStrategy
フィールドを使用します:
バージョン履歴
バージョン | 変更点 |
---|---|
13.0.0 | experimental.turbo が導入されました。 |