このセクションの内容は、以下のリンクの内容を基にしており、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 | number
false
動的インポートに対するグローバルなプリフェッチを指定します。詳細はwebpackPrefetch
を参照してください。
boolean | number
false
動的インポートに対するグローバルなプリロードを指定します。詳細はwebpackPreload
を参照してください。
'low' | 'high' | 'auto'
'auto'
動的インポートに対するグローバルなfetchPriority
を指定します。詳細はwebpackFetchPriority
を参照してください。
true | false | 'relative'
true
new URL()
構文の解析を有効にします。
'relative' を使用する場合、Rspack は new URL()
構文に対して相対 URL を生成します。つまり、結果の URL にはベース URL が含まれません。
boolean | undefined
true
完全な動的依存関係 (import(variable)
) に対する警告を有効にします。
boolean | undefined
false
部分的な動的依存関係 (import("./path/to/" + variable)
) に対する警告を有効にします。
RegExp | undefined
/.*/
ラップされた動的依存関係に一致する正規表現を設定します。
boolean
true
import.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[] | boolean
Workerの解析のためのカスタム構文を提供します。一般的にWorkletのサポートに使用されます。
'strict' | 'non-strict'
モジュールを厳密モードまたは非厳密モードに上書きします。
これによりモジュールの動作に影響を与える可能性があります(厳密モードと非厳密モードでは動作が異なる場合があります)。そのため、このオプションは慎重に設定してください。
javascript/auto
モジュールのパーサーオプションです。javascript
パーサーオプションと同じです。
javascript/dynamic
モジュールのパーサーオプションです。javascript
パーサーオプションと同じです。
javascript/esm
モジュールのパーサーオプションです。javascript
パーサーオプションと同じです。
css/auto
モジュールのパーサーオプションです。
この設定は、experiments.css = true
の場合にのみ有効になります。
boolean
true
CSSエクスポートに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'
のモジュールに対してのみ有効です。
string
require('mime-types').lookup(ext)
data URIのmimetypeです。デフォルトではモジュールリソースの拡張子から解決されます。モジュールタイプが'asset'
または'asset/inline'
のモジュールに対してのみ有効です。
string | ((pathData: PathData, assetInfo?: AssetInfo) => string)
undefined
output.assetModuleFilename
を参照してください。output.assetModuleFilename
と同じです。output.assetModuleFilename
を上書きし、asset
とasset/resource
モジュールタイプに対してのみ機能します。
string | ((pathData: PathData, assetInfo?: AssetInfo) => string)
undefined
output.publicPath
を上書きします。モジュールタイプが'asset'
または'asset/resource'
のモジュールに対してのみ有効です。
boolean
true
アセットをディスクに出力するかどうかを指定します。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モジュールにどのようにエクスポートされるかをカスタマイズします(そのまま保持する、キャメルケースに変換するなど)。
boolean
true
、ウェブ環境ではfalse
。true
の場合、識別子マッピングのみをCSSから出力JavaScriptファイルにエクスポートし、テンプレートにスタイルシートを埋め込みません。CSS Modulesをプリレンダリング(例:SSR)で使用する場合に便利です。
false
の場合、スタイルシートを生成し、テンプレートに埋め込みます。
string
[uniqueName]-[id]-[local]
ファイルレベルおよびモジュールレベルでの置換に加えて、CSSモジュールに対して生成されるローカルクラス名のフォーマットをカスタマイズします。[uniqueName]
と[local]
も含まれます。
boolean
true
この設定は、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.rules
Rule.oneOf
Condition
undefined
この条件に一致するすべてのモジュールを除外します。リソースの絶対パス(クエリとフラグメントを除く)に対して照合されます。このオプションは、Rule.resource
と同時に存在できません。
Condition
undefined
リソースの絶対パス(クエリとフラグメントを除く)に対して、この条件に一致するすべてのモジュールに一致します。このオプションは、Rule.resource
と同時に存在できません。
Condition
undefined
このリソースに一致するすべてのモジュールに一致します。リソース(クエリとフラグメントを除く絶対パス)に対して照合されます。このオプションは、Rule.test
と同時に存在できません。
Condition
undefined
リソースのクエリに対してこのリソースに一致するすべてのモジュールに一致します。注:?
を含みます。Rule.resourceQuery
が?raw
の場合、foo?raw
のリソースリクエストと一致します。
Condition
undefined
リソースのフラグメントに対してこのリソースに一致するすべてのモジュールに一致します。注:#
を含みます。Rule.resourceFragment
が#abc
の場合、foo#abc
のリソースリクエストと一致します。
Condition
undefined
このリソースに一致するすべてのモジュールに一致します。リソース(クエリとフラグメントを除く絶対パス)に対して照合されます。このオプションは、Rule.resource
と同時に存在できません。
Condition
undefined
現在のモジュールを発行したモジュールのリソース(クエリとフラグメントを除く絶対パス)に対してこのリソースに一致するすべてのモジュールに一致します。
string
undefined
現在のモジュールを発行したモジュールのレイヤーに対して、このリソースに一致するすべてのモジュールに一致します。
この設定は、experiments.layers = trueの場合にのみ有効になります。
基本的な例
より複雑な例としては、entryオプションと組み合わせて、モダンバンドルとレガシーバンドルを同時にビルドすることが挙げられます。
Condition
undefined
現在のモジュールを導入した依存関係のカテゴリに一致するすべてのモジュールに一致します。例えば、import
およびimport()
の場合はesm
、require()
の場合はcjs
、new URL()
およびurl()
の場合はurl
などです。
Condition
undefined
リソースのスキームに対してこのリソースに一致するすべてのモジュールに一致します。
例えば、次の設定を使用して、インラインデータuriリソースを別個のリソースとして扱うことができます。
Condition
undefined
リソースのmimetypeに対してこのリソースに一致するすべてのモジュールに一致します。
{ [key: string]: Condition }
undefined
descriptionData
オプションを使用すると、通常はpackage.json
である説明ファイルのプロパティの値と照合して、どのモジュールにルールを適用するかを決定できます。これは、package.json
にあるメタデータに基づいて特定のモジュールにルールを適用するのに便利な方法です。
descriptionData
のオブジェクトキーは、モジュールのpackage.json
のキー(name
、version
など)に対応します。各キーには、package.json
データと照合するためのCondition
を関連付ける必要があります。
例えば、以下では、package.json
のname
に'rspack'
文字列が含まれているJavaScriptリソースのみにルールを適用しています。
{ [key: string]: Condition }
undefined
with
は、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
一種のネストされたルールであり、親ルールが一致した場合、最初に一致したルールのみが使用されるルールの配列です。