このセクションの内容は、以下のリンクの内容を元に作成されており、CC BY 4.0 ライセンスの対象となります。
特に明記されていない限り、以下の内容は元のコンテンツに基づいて修正および削除が行われた結果とみなすことができます。
ほとんどのユーザーにとって、SplitChunksPlugin はすぐに使用できます。
デフォルトでは、オンデマンドチャンクのみに影響します。初期チャンクを変更すると、プロジェクトを実行するためにHTMLファイルに含める必要があるスクリプトタグに影響するためです。
Rspack は以下の条件に基づいてチャンクを自動的に分割します。
最後の2つの条件を満たそうとするときに、より大きなチャンクが優先されます。
Rspack は、この機能をより詳細に制御したい開発者向けに、一連のオプションを提供しています。
デフォルトの設定は、Web パフォーマンスのベストプラクティスに適合するように選択されていますが、プロジェクトに最適な戦略は異なる場合があります。設定を変更する場合は、変更の影響を測定して、実際のメリットがあることを確認する必要があります。
この設定オブジェクトは、SplitChunksPlugin のデフォルトの動作を表します。
ファイルパスが Rspack によって処理されると、UNIX システムでは常に/、Windows システムでは常に\が含まれます。そのため、パスセパレーターを表すには、{cacheGroup}.test フィールドで[\\/]を使用する必要があります。{cacheGroup}.test内の/または\は、クロスプラットフォームで使用すると問題が発生します。
{cacheGroup}.testにエントリ名を渡し、既存のチャンクの名前を{cacheGroup}.nameに使用することは、もはや許可されていません。
キャッシュグループは、splitChunks.{cacheGroup}.*からのオプションを継承および/またはオーバーライドできますが、test、priority、およびreuseExistingChunkは、キャッシュグループレベルでのみ設定できます。デフォルトのキャッシュグループを無効にするには、それらをfalseに設定します。
'initial' | 'all' | 'async' | RegExp | ((chunk: Chunk) => bool)'async'これは、最適化の対象となるチャンクを示します。
文字列が指定されている場合、有効な値はall、async、およびinitialです。allを指定すると、非同期チャンクと非非同期チャンクの間でもチャンクを共有できるため、特に強力です。
または、より詳細な制御のために関数を使用することもできます。戻り値は、各チャンクを含めるかどうかを示します。
正規表現を渡すこともできます。これは(chunk) => regex.test(chunk.name)の略記です。
number30オンデマンドロード時の最大並列リクエスト数。
number30エントリポイントでの最大並列リクエスト数。
number1分割する前に、モジュールをチャンク間で共有する必要がある最小回数。
booleanoptions.modeが'production'の場合はtrue、それ以外の場合はfalse。maxSizeによって分割されたパーツの名前を作成する際に、パス情報を公開しないようにします。
number | Record<string, number>20000、それ以外の環境では10000生成されるチャンクの最小サイズ (バイト)。
number | Record<string, number> = 0
maxSize(グローバルなoptimization.splitChunks.maxSize、キャッシュグループごとのoptimization.splitChunks.cacheGroups[x].maxSize、またはフォールバックキャッシュグループのoptimization.splitChunks.fallbackCacheGroup.maxSizeのいずれか)を使用すると、Rspack はmaxSizeバイトより大きいチャンクをより小さなパーツに分割しようとします。パーツのサイズは少なくともminSize(maxSizeの隣)になります。アルゴリズムは決定論的であり、モジュールの変更はローカルな影響しかありません。そのため、長期キャッシングで使用でき、レコードは必要ありません。maxSizeはヒントに過ぎず、モジュールがmaxSizeより大きい場合、または分割によってminSizeに違反する場合には、違反される可能性があります。
チャンクに既に名前がある場合、各パーツにはその名前から派生した新しい名前が付けられます。optimization.splitChunks.hidePathInfoの値に応じて、最初のモジュール名から派生したキーまたはそのハッシュを追加します。
maxSizeオプションは、HTTP/2と長期キャッシングで使用することを目的としています。リクエスト数を増やすことで、より良いキャッシングを実現します。また、ファイルサイズを小さくすることで、より高速な再構築を実現することもできます。
maxSizeはmaxInitialRequest/maxAsyncRequestsよりも優先順位が高くなります。実際の優先順位はmaxInitialRequest/maxAsyncRequests < maxSize < minSizeです。
maxSizeの値を設定すると、maxAsyncSizeとmaxInitialSizeの両方の値が設定されます。
number | Record<string, number>
maxSizeと同様に、maxAsyncSizeはグローバル(splitChunks.maxAsyncSize)、キャッシュグループ(splitChunks.cacheGroups.{cacheGroup}.maxAsyncSize)、またはフォールバックキャッシュグループ(splitChunks.fallbackCacheGroup.maxAsyncSize)に適用できます。
maxAsyncSizeとmaxSizeの違いは、maxAsyncSizeはオンデマンドロードチャンクのみに影響することです。
number | Record<string, number>
maxSizeと同様に、maxInitialSizeはグローバル(splitChunks.maxInitialSize)、キャッシュグループ(splitChunks.cacheGroups.{cacheGroup}.maxInitialSize)、またはフォールバックキャッシュグループ(splitChunks.fallbackCacheGroup.maxInitialSize)に適用できます。
maxInitialSizeとmaxSizeの違いは、maxInitialSizeは初期ロードチャンクのみに影響することです。
string-デフォルトでは、Rspack はチャンクの起源と名前を使用して名前を生成します(例: vendors-main.js)。
このオプションを使用すると、生成された名前で使用されるデリミターを指定できます。
string | functionfalse関数タイプのバージョンが
>=0.4.1の場合。
各cacheGroupでも使用可能: splitChunks.cacheGroups.{cacheGroup}.name。
分割チャンクの名前。falseを指定すると、チャンクの同じ名前が維持されるため、名前が不要に変更されることはありません。本番ビルドには推奨値です。
文字列を指定すると、カスタム名を使用できます。文字列を指定すると、すべての共通モジュールとベンダーが単一のチャンクにマージされます。これにより、初期ダウンロードサイズが大きくなり、ページの読み込み速度が低下する可能性があります。
splitChunks.nameがエントリポイント名と一致する場合、エントリポイントは削除されます。
splitChunks.cacheGroups.{cacheGroup}.nameを使用して、モジュールをソースチャンクの親であるチャンクに移動できます。たとえば、name: "entry-name"を使用して、モジュールをentry-nameチャンクに移動します。オンデマンドの名前付きチャンクも使用できますが、選択したモジュールがそのチャンクでのみ使用されるように注意する必要があります。
booleanこの設定を有効にすると、チャンクの分割は、異なるランタイムでのモジュールエクスポートの使用状況に基づいてグループ化され、各ランタイムでの最適なロードサイズが確保されます。
たとえば、foo、bar、bazという名前の3つのエントリポイントがあり、すべてsharedという同じモジュールに依存しているとします。ただし、fooとbarはsharedからのエクスポートvalue1に依存し、bazはsharedからのエクスポートvalue2に依存しています。
デフォルトの戦略では、sharedモジュールは3つのチャンクに表示されます。分割のminSizeを満たす場合、sharedモジュールは別のチャンクに抽出する必要があります。
しかし、これでは、3つのエントリポイントのいずれにも最適なロードサイズが得られません。fooとbarのエントリからsharedモジュールをロードすると、エクスポートvalue2が不要にロードされ、bazのエントリからロードすると、エクスポートvalue1が不要にロードされます。
splitChunks.usedExports最適化を有効にすると、sharedモジュールのどのエクスポートが異なるエントリで使用されているかを分析します。これにより、fooとbarで使用されているエクスポートはbazで使用されているエクスポートとは異なることが判明し、fooとbarのエントリに対応する1つと、bazのエントリに対応するもう1つの、2つの異なるチャンクが作成されます。
string[]数値がサイズに使用されている場合に使用されるサイズの種類を設定します。
キャッシュグループは、splitChunks.*からのオプションを継承および/または上書きできます。ただし、test、priority、reuseExistingChunkは、キャッシュグループレベルでのみ設定できます。デフォルトのキャッシュグループを無効にするには、falseに設定します。
number-20モジュールは複数のキャッシュグループに属することができます。最適化は、より高いpriorityを持つキャッシュグループを優先します。デフォルトのグループは負の優先度を持ち、カスタムグループがより高い優先度を持つことを可能にします(カスタムグループのデフォルト値は0です)。
RegExp | string | function関数タイプのバージョンが
>=0.4.1の場合。
このキャッシュグループによって選択されるモジュールを制御します。省略すると、すべてのモジュールが選択されます。絶対モジュールリソースパスまたはチャンク名と一致させることができます。チャンク名が一致すると、チャンク内のすべてのモジュールが選択されます。
booleanRspackに対し、splitChunks.minSize、splitChunks.minChunks、splitChunks.maxAsyncRequests、splitChunks.maxInitialRequestsオプションを無視し、このキャッシュグループのチャンクを常に作成するように指示します。
stringチャンクIDのヒントを設定します。チャンクのファイル名に追加されます。
string初期チャンクの場合にのみ、ファイル名を上書きできます。output.filenameで使用可能なプレースホルダーはすべてここで使用できます。
booleanfalse可能な場合は既存のチャンクを再利用するかどうか。もしそうであれば、分割後、新しく作成されたチャンクに含まれるモジュールが元のチャンクとまったく同じ場合、元のチャンクが再利用され、新しいチャンクは生成されません。これは、チャンクの最終的なファイル名に影響を与える可能性があります。例:
チャンクFooとBarでは、cacheGroupの設定により、モジュールBはモジュールBのみを含む新しいチャンクに分割されます。この新しいチャンクは、それが含むモジュールの点でチャンクBarと同一であるため、チャンクBarを直接再利用できます。
reuseExistingChunkの設定がfalseに設定されている場合、チャンクBarとFooのモジュールBは新しいチャンクに移動され、チャンクBarはモジュールを含まなくなるため、空のチャンクとして削除されます。
string | RegExpモジュールタイプでモジュールをキャッシュグループに割り当てることができます。