アセット(画像、フォント、動画など)はRspackのファーストクラスオブジェクトです。つまり、処理するためにローダーは必要ありません。他のモジュールタイプとは異なり、アセットは通常単独で存在するため、モジュールの粒度で生成されます。
JavaScriptモジュールなどの他のモジュールタイプは、通常、最終的なバンドル生成のために1つ以上のチャンクにバンドルされます。アセットモジュールの場合は、バンドルされることはほとんど不可能なため、通常は独立して存在します。これが「アセットモジュール」と呼ばれる最も直接的な理由の1つです。
'asset/inline'
: アセットをBase64エンコーディングを使用してDataURIに変換します。現時点では、エンコーディングの設定はサポートされていません。'asset/resource'
: アセットを別のファイルに変換し、URLアドレスをエクスポートします。'asset'
:
'asset/inline'
または'asset/resource'
を自動的に選択します'asset/inline'
メカニズムが適用されます。それ以外の場合は、'asset/resource'
メカニズムが使用されます。'asset/source'
: アセットファイルを変換し、生の文字列としてエクスポートします。type: 'asset'
を使用するデフォルトでは、アセットサイズが8096バイト以下の場合、'asset/inline'
メカニズムが適用されます。それ以外の場合は、'asset/resource'
ポリシーが使用されます。
この動作を変更する場合は、module.parser.asset.dataUrlCondition
を使用してグローバル設定を変更するか、Rule.parser.dataUrlCondition
を使用して、特定の対象モジュールに対して個別に設定できます。
url-loader
をtype: 'asset/inline'
に置き換えるfile-loader
をtype: 'asset/resource'
に置き換えるraw-loader
をtype: 'asset/source'
に置き換える特定の画像を最適化したい場合があります。たとえば、サイズを圧縮する場合などです。これらのローダーは引き続き使用できます。
たとえば、image-minimizer-webpack-pluginを使用して、.png
で終わるすべてのファイルを最適化します。
上記の条件では、type: 'asset/resource'
を使用しています。これにより、Rspackはすべての一致するファイルの個々のファイル生成を完了し、最終的なアセットのURLアドレスを返します。