このセクションの内容は、以下のリンクの内容を基にしており、CC BY 4.0 ライセンスの対象となります。
特に明記されていない限り、以下の内容は、元のコンテンツに基づいた修正と削除の結果であるとみなすことができます。
プロジェクト内の様々な種類のモジュールの処理方法を決定するために使用されます。
Object{}Rule[]モジュールにデフォルトで適用されるルールの配列です。
詳細はソースコードを参照してください。
string | string[] | RegExp | RegExp[] | ((request: string) => boolean)undefined一致したモジュールのモジュール機構(例:module.exports、require、import)を現状のまま保持します。
外部依存関係のないライブラリを無視するために使用すると、ビルドのパフォーマンスを向上させるのに役立ちます。
注:これらのモジュールは、設定されたローダーによって処理されます。
Object{}module.parserを使用して、すべてのパーサーのオプションを一元的に設定します。
assetモジュールのパーサーオプションです。
{ maxSize: number }{ maxSize: 8096 }モジュールのサイズがmaxSize以下の場合、モジュールはBase64でエンコードされます。それ以外の場合は、ファイルが作成されます。このオプションは、アセットモジュールシナリオでのみ使用できます。
javascriptモジュールのパーサーオプションです。
'lazy' | 'eager' | 'weak' | 'lazy-once''lazy'動的インポートのグローバルモードを指定します。詳細はwebpackModeを参照してください。
boolean | numberfalse動的インポートに対するグローバルなプリフェッチを指定します。詳細はwebpackPrefetchを参照してください。
boolean | numberfalse動的インポートに対するグローバルなプリロードを指定します。詳細はwebpackPreloadを参照してください。
'low' | 'high' | 'auto''auto'動的インポートに対するグローバルなfetchPriorityを指定します。詳細はwebpackFetchPriorityを参照してください。
true | false | 'relative'truenew URL()構文の解析を有効にします。
'relative' を使用する場合、Rspack は new URL() 構文に対して相対 URL を生成します。つまり、結果の URL にはベース URL が含まれません。
boolean | undefinedtrue完全な動的依存関係 (import(variable)) に対する警告を有効にします。
boolean | undefinedfalse部分的な動的依存関係 (import("./path/to/" + variable)) に対する警告を有効にします。
RegExp | undefined/.*/ラップされた動的依存関係に一致する正規表現を設定します。
booleantrueimport.metaの評価を有効または無効にします。
'error' | 'warn' | 'auto' | false'auto'存在しないエクスポートと競合する再エクスポートの使用について、警告またはエラーを発生させます。
"error": エラーを報告します。"warn": 警告を報告します。"auto": モジュールが厳密なESMかどうかによって、厳密なESMの場合はエラー、それ以外の場合は警告を出力します。false: この機能を無効にします。'error' | 'warn' | 'auto' | false存在しないエクスポートの使用について、警告またはエラーを発生させます。module.parser.javascript.exportsPresenceの設定をデフォルトとして使用します。
'error' | 'warn' | 'auto' | false競合する再エクスポートについて、警告またはエラーを発生させます。module.parser.javascript.exportsPresenceの設定をデフォルトとして使用します。
booleanインポートされた名前がインポートされたモジュールに存在しない場合、警告ではなくエラーを出力します。
string[] | booleanWorkerの解析のためのカスタム構文を提供します。一般的にWorkletのサポートに使用されます。
'strict' | 'non-strict'モジュールを厳密モードまたは非厳密モードに上書きします。
これによりモジュールの動作に影響を与える可能性があります(厳密モードと非厳密モードでは動作が異なる場合があります)。そのため、このオプションは慎重に設定してください。
javascript/autoモジュールのパーサーオプションです。javascriptパーサーオプションと同じです。
javascript/dynamicモジュールのパーサーオプションです。javascriptパーサーオプションと同じです。
javascript/esmモジュールのパーサーオプションです。javascriptパーサーオプションと同じです。
css/autoモジュールのパーサーオプションです。
この設定は、experiments.css = trueの場合にのみ有効になります。
booleantrueCSSエクスポートにESモジュールの名前付きエクスポートを使用します。
namedExports: trueを使用する場合、名前空間エクスポートまたは名前付きエクスポートを使用できます。
namedExports: falseを使用する場合、名前空間エクスポートと名前付きエクスポートに加えて、デフォルトエクスポートも使用できます。
cssモジュールのパーサーオプションです。
この設定は、experiments.css = trueの場合にのみ有効になります。
module.parser["css/auto"].namedExportsと同じです。
css/moduleモジュールのパーサーオプションです。
この設定は、experiments.css = trueの場合にのみ有効になります。
module.parser["css/auto"].namedExportsと同じです。
Object{}module.generatorを使用して、すべてのジェネレーターのオプションを1か所で設定します。
assetモジュールのジェネレーターオプションです。
Object | (options: { content: string, filename: string }) => string{}モジュールタイプが'asset'または'asset/inline'のモジュールに対してのみ有効です。
関数の場合は、各モジュールに対して実行され、data URI文字列を返す必要があります。
false | 'base64''base64''base64'に設定すると、モジュールソースはBase64アルゴリズムを使用してエンコードされます。encodingをfalseに設定すると、エンコーディングが無効になります。モジュールタイプが'asset'または'asset/inline'のモジュールに対してのみ有効です。
stringrequire('mime-types').lookup(ext)data URIのmimetypeです。デフォルトではモジュールリソースの拡張子から解決されます。モジュールタイプが'asset'または'asset/inline'のモジュールに対してのみ有効です。
string | ((pathData: PathData, assetInfo?: AssetInfo) => string)undefinedoutput.assetModuleFilenameを参照してください。output.assetModuleFilenameと同じです。output.assetModuleFilenameを上書きし、assetとasset/resourceモジュールタイプに対してのみ機能します。
string | ((pathData: PathData, assetInfo?: AssetInfo) => string)undefinedoutput.publicPathを上書きします。モジュールタイプが'asset'または'asset/resource'のモジュールに対してのみ有効です。
booleantrueアセットをディスクに出力するかどうかを指定します。SSRなどのシナリオでは、不要なファイルの出力を避けるために、このオプションをfalseに設定できます。
モジュールタイプが'asset'または'asset/resource'のモジュールに対してのみ有効です。
'asset':'asset/resource':asset/inlineモジュールのジェネレーターオプションです。
module.generator["asset"].dataUrlと同じです。
module.generator["asset"].dataUrl.encodingと同じです。
module.generator["asset"].dataUrl.mimetypeと同じです。
asset/resourceモジュールのジェネレーターオプションです。
module.generator["asset"].filenameと同じです。
module.generator["asset"].publicPathと同じです。
css/autoモジュールのジェネレーターオプションです。
この設定は、experiments.css = trueの場合にのみ有効になります。
'as-is' | 'camel-case' | 'camel-case-only' | 'dashes' | 'dashes-only''as-is'CSSエクスポート名がJavaScriptモジュールにどのようにエクスポートされるかをカスタマイズします(そのまま保持する、キャメルケースに変換するなど)。
booleantrue、ウェブ環境ではfalse。trueの場合、識別子マッピングのみをCSSから出力JavaScriptファイルにエクスポートし、テンプレートにスタイルシートを埋め込みません。CSS Modulesをプリレンダリング(例:SSR)で使用する場合に便利です。
falseの場合、スタイルシートを生成し、テンプレートに埋め込みます。
string[uniqueName]-[id]-[local]ファイルレベルおよびモジュールレベルでの置換に加えて、CSSモジュールに対して生成されるローカルクラス名のフォーマットをカスタマイズします。[uniqueName]と[local]も含まれます。
booleantrueこの設定は、ESM-CJSの相互運用性を向上させるために利用できます。
CSSのエクスポートに__esModuleを追加するかどうかを指定します。追加した場合、esm-cjsの相互運用時にはESモジュールとして扱われ、追加しない場合はCommonJSモジュールとして扱われます。
例えば、サードパーティのコンポーネントライブラリからCommonJS出力を利用する場合、正しいエクスポートを取得するために、この設定を追加して正しいesm-cjsの相互運用性を確保することが必要な場合があります(これはRule.testやその他のマッチング条件と組み合わせて、特定のコンポーネントライブラリにのみ適用できます)。
サードパーティ製コンポーネントライブラリの元のソースコード
サードパーティ製コンポーネントライブラリによって公開されたCommonJS形式の出力
cssモジュールのジェネレータオプション。
この設定は、experiments.css = trueの場合にのみ有効になります。
module.generator["css/auto"].exportsOnlyと同じです。
module.generator["css/auto"].esModuleと同じです。
css/moduleモジュールのジェネレータオプション。
この設定は、experiments.css = trueの場合にのみ有効になります。
module.generator["css/auto"].exportsConventionと同じです。
module.generator["css/auto"].exportsOnlyと同じです。
module.generator["css/auto"].localIdentNameと同じです。
module.generator["css/auto"].esModuleと同じです。
Rule[][]モジュールが作成されるときに、モジュールのリクエストと一致するルールの配列です。これらのルールは、モジュールの作成動作を変更できます。ローダーなどをモジュールに適用できます。
Rule{}Ruleは、モジュールの一致条件と、それらのモジュールの処理動作を定義します。
Ruleの動作
対応する一致モジュールの処理動作を定義します。例:
Rule.use)Rule.type)Rule.resolve)string | RegExp | Condition[] | LogicalConditionsモジュールの一致条件を定義します。一般的な一致は、resource、resourceQuery、include、excludeです。
例:app.jsが./image.png?inline#fooをインポートする
resourceは/path/to/image.pngであり、Rule.resource Conditionと照合されます。resourceQueryは?inlineであり、Rule.resourceQuery Conditionと照合されます。resourceFragmentは#fooであり、Rule.resourceFragment Conditionと照合されます。Conditionは、指定された入力との照合形式を表し、次の型をサポートします。
String: 指定された入力に対し、入力文字列がstartsWithを満たす場合、一致は成功します。注:input.startsWith(condition)と考えることができます。RegExp: 指定された入力に対し、入力文字列が正規表現を満たす場合、一致は成功します。注:condition.test(input)と考えることができます。Condition[]: 条件のリスト。少なくとも1つのConditionが一致する必要があります。LogicalConditions: すべてのConditionが一致する必要があります。
{ and: Condition[] }: すべてのConditionが一致する必要があります。{ or: Condition[] }: 少なくとも1つのConditionが一致する必要があります。{ not: Condition }: すべてのConditionが一致しては**なりません**。(value: string) => boolean: 入力値で呼び出され、真の値を返す場合、一致は成功します。ネストされたRuleは、Rule.rulesおよびRule.oneOfのプロパティの下に指定できます。これらのルールは、親Ruleの条件が一致した場合にのみ評価されます。各ネストされたルールには、独自の条件を含めることができます。
評価の順序は次のとおりです。
Rule.rulesRule.oneOfConditionundefinedこの条件に一致するすべてのモジュールを除外します。リソースの絶対パス(クエリとフラグメントを除く)に対して照合されます。このオプションは、Rule.resourceと同時に存在できません。
Conditionundefinedリソースの絶対パス(クエリとフラグメントを除く)に対して、この条件に一致するすべてのモジュールに一致します。このオプションは、Rule.resourceと同時に存在できません。
Conditionundefinedこのリソースに一致するすべてのモジュールに一致します。リソース(クエリとフラグメントを除く絶対パス)に対して照合されます。このオプションは、Rule.testと同時に存在できません。
Conditionundefinedリソースのクエリに対してこのリソースに一致するすべてのモジュールに一致します。注:?を含みます。Rule.resourceQueryが?rawの場合、foo?rawのリソースリクエストと一致します。
Conditionundefinedリソースのフラグメントに対してこのリソースに一致するすべてのモジュールに一致します。注:#を含みます。Rule.resourceFragmentが#abcの場合、foo#abcのリソースリクエストと一致します。
Conditionundefinedこのリソースに一致するすべてのモジュールに一致します。リソース(クエリとフラグメントを除く絶対パス)に対して照合されます。このオプションは、Rule.resourceと同時に存在できません。
Conditionundefined現在のモジュールを発行したモジュールのリソース(クエリとフラグメントを除く絶対パス)に対してこのリソースに一致するすべてのモジュールに一致します。
stringundefined現在のモジュールを発行したモジュールのレイヤーに対して、このリソースに一致するすべてのモジュールに一致します。
この設定は、experiments.layers = trueの場合にのみ有効になります。
基本的な例
より複雑な例としては、entryオプションと組み合わせて、モダンバンドルとレガシーバンドルを同時にビルドすることが挙げられます。
Conditionundefined現在のモジュールを導入した依存関係のカテゴリに一致するすべてのモジュールに一致します。例えば、importおよびimport()の場合はesm、require()の場合はcjs、new URL()およびurl()の場合はurlなどです。
Conditionundefinedリソースのスキームに対してこのリソースに一致するすべてのモジュールに一致します。
例えば、次の設定を使用して、インラインデータuriリソースを別個のリソースとして扱うことができます。
Conditionundefinedリソースのmimetypeに対してこのリソースに一致するすべてのモジュールに一致します。
{ [key: string]: Condition }undefineddescriptionDataオプションを使用すると、通常はpackage.jsonである説明ファイルのプロパティの値と照合して、どのモジュールにルールを適用するかを決定できます。これは、package.jsonにあるメタデータに基づいて特定のモジュールにルールを適用するのに便利な方法です。
descriptionDataのオブジェクトキーは、モジュールのpackage.jsonのキー(name、versionなど)に対応します。各キーには、package.jsonデータと照合するためのConditionを関連付ける必要があります。
例えば、以下では、package.jsonのnameに'rspack'文字列が含まれているJavaScriptリソースのみにルールを適用しています。
{ [key: string]: Condition }undefinedwithは、import属性と組み合わせて使用できます。
例えば、以下の設定は{ type: "url" }に一致し、一致したモジュールのtypeを"asset/resource"に変更します。
以下のインポートは一致するでしょう。
builtin:swc-loaderを使用する場合、Rspackがwith構文に正しくマッチするために、インポート属性を保持するためにkeepImportAttributes設定を手動で有効にする必要があることに注意してください。
このオプションは非推奨です。代わりにRule.useを使用してください。
Rule.loaderはRule.use: [ { loader } ]のショートカットです。Rule.useの詳細をご覧ください。
Rule.optionsはRule.use: [ { options } ]のショートカットです。Rule.useの詳細をご覧ください。
Object{}ルール条件に一致した特定のモジュールのパーサーオプションです。これはmodule.parserのパーサーオプションをオーバーライドします。
特定のパーサーオプションと対応するモジュールタイプについては、module.parserを参照してください。
Object{}ルール条件に一致した特定のモジュールのジェネレーターオプションです。これはmodule.generatorのパーサーオプションをオーバーライドします。
特定のジェネレーターオプションと対応するモジュールタイプについては、module.generatorを参照してください。
booleanモジュールに副作用があることをマークします。
'pre' | 'post'ローダーのカテゴリを指定します。
'pre'を指定すると、ローダーは他のすべてのローダーの前に実行されます。
'post'を指定すると、ローダーは他のすべてのローダーの後で実行されます。
'javascript/auto' | 'typescript' | 'css' | 'css/module' | 'css/auto' | 'json' | 'asset' | 'asset/source' | 'asset/resource' | 'asset/inline'一致したモジュールの型をマークするために使用され、モジュールがRspackの組み込み処理によってどのように処理されるかに影響します。例えば、モジュールが'typescript'としてマークされると、モジュールはTSパーサー/ジェネレーターを使用して処理されます。
'javascript/auto': JavaScriptモジュール、サポートされるモジュールシステム: CommonJS、ESM、現時点ではAMDモジュールサポートの予定はありません。'javascript/esm':ESモジュールとして扱われるJavaScriptモジュール。'javascript/dynamic':スクリプトとして扱われるJavaScriptモジュール。'css': CSSモジュール'css/module': CSS Modulesモジュール'css/auto': ファイル名が/\.module(s)?\.[^.]+$/に一致する場合はCSS Modulesモジュール、そうでない場合はCSSモジュール'json': JSONデータモジュール'asset' | 'asset/source' | 'asset/resource' | 'asset/inline': Asset Moduleを参照してください。string一致したモジュールのレイヤーをマークするために使用されます。モジュールのグループは1つのレイヤーにまとめることができ、その後、分割チャンク、統計、またはエントリオプションで使用できます。
この設定は、experiments.layers = trueの場合にのみ有効になります。
ローダーのパッケージ名とそのオプションを渡す配列。string[] 例: use: ['svgr-loader']はuse: [ { loader: 'svgr-loader' } ]の略記です。ローダーは右から左の順序で実行されます。
関数を使用することもできます。
一致したモジュールに基づいて、特定のモジュール解決オプションを設定します。
Rule[]undefined一種のネストされたルールであり、親ルールが一致した場合にも使用されるルールの配列です。
Rule[]undefined一種のネストされたルールであり、親ルールが一致した場合、最初に一致したルールのみが使用されるルールの配列です。