このセクションの内容は、以下のリンクの内容を基にしており、CC BY 4.0 ライセンスの対象となります。
特に明記されていない限り、以下の内容は、元のコンテンツに基づいて修正と削除が行われた結果であるとみなすことができます。
最上位の `output` キーには、バンドル、アセット、その他 Rspack でバンドルまたはロードするものをどのように、どこに配置するかを指示する一連のオプションが含まれています。
Objectstring | ((pathData: PathData, assetInfo?: JsAssetInfo) => string)'[hash][ext][query]'output.filename と同じですが、アセットモジュール 用です。
[name]、[file]、[query]、[fragment]、[base]、および [path] は、data URI 置換から構築されたアセットに対して空文字列に設定されます。
アセットモジュールによって出力されるファイル名。この値は、Rule.generator.filename で上書きできます。
'asset'であり、アセットはRule.parser.dataUrlConditionを満たすように設定されています。'asset/resource'です。booleantrueオンデマンドでロードされる非同期チャンクを作成します。
booleantrueHTML の <script> タグに charset="utf-8" を追加します。
<script> タグの `charset` 属性は非推奨 になりましたが、Rspack は非近代的なブラウザとの互換性のために、デフォルトで追加しています。
string = '[id].js' | (pathData: PathData, assetInfo?: JsAssetInfo) => stringoutput.filename によって決定されます。関数の場合、'[id].js'。このオプションは、初期以外のチャンクファイルの名前を決定します。可能な値の詳細については、output.filename オプションを参照してください。
これらのファイル名は、チャンクのリクエストを送信するために実行時に生成する必要があることに注意してください。このため、[name] や [chunkhash] のようなプレースホルダーは、Rspack ランタイムを使用して、チャンク ID からプレースホルダー値へのマッピングを出力バンドルに追加する必要があります。これによりサイズが増加し、いずれかのチャンクのプレースホルダー値が変更されるとバンドルが無効になる可能性があります。
デフォルトでは、[id].js が使用されるか、output.filename から推測された値([name] は [id] に置き換えられるか、または [id]. がプレフィックスとして追加される)が使用されます。
関数としての使用
false | 'array-push' | 'commonjs' | 'module' | stringtarget と output.module によって決定されます。チャンクのフォーマット(デフォルトで含まれるフォーマットは'array-push'(web/webworker)、'commonjs'(node.js)、'module'(ESM)ですが、プラグインによって他のフォーマットが追加される可能性があります)。
このオプションのデフォルト値は、targetとoutput.moduleの設定によって異なります。詳細については、「chunkFormat」をRspack のデフォルト設定で検索してください。
number120000チャンクのリクエストがタイムアウトするまでのミリ秒数。
stringoutput.uniqueNameによって決定されます。グローバル変数は、Rspack がチャンクの読み込みに使用する変数です。
false | 'jsonp' | 'import-scripts' | 'require' | 'async-node' | 'import'チャンクを読み込む方法(デフォルトで含まれる方法は'jsonp'(web)、'import'(ESM)、'importScripts'(webworker)、'require'(同期 node.js)、'async-node'(非同期 node.js)ですが、プラグインによって他の方法が追加される可能性があります)。デフォルト値は、targetとchunkFormatの設定に基づいて決定されます。
このオプションのデフォルト値は、targetとchunkFormatの設定によって異なります。詳細については、"chunkLoading"をRspack のデフォルト設定で検索してください。
booleanfalse出力ディレクトリ内のすべてのファイルを削除してから、出力物を生成します。
booleantrue出力ファイルシステムに書き込む前に、既に存在するファイルが同じ内容を持っているかどうかをRspackに確認させます。
ディスク上に既に同じ内容のファイルが存在する場合、Rspackは出力ファイルを作成しません。
false | 'anonymous' | 'use-credentials'falsecrossOriginLoading設定を使用すると、動的に読み込まれたチャンクのcrossorigin 属性を設定できます。
targetが'web'の場合、Rspackは非同期JavaScriptとCSSリソースを読み込むために、動的に<script>タグと<link>タグを作成します。これらのリソースのURLが他のドメインにあり、crossOriginLoadingがfalseでない場合、Rspackは<script>タグと<link>タグにcrossorigin属性を追加します。
オプション値
crossOriginLoadingには、次のオプション値があります。
false: crossorigin 属性を設定しません。'anonymous': ユーザー認証情報なしでクロスオリジンを有効にするために、crossoriginを'anonymous'に設定します。'use-credentials': ユーザー認証情報を使用してクロスオリジンを有効にするために、crossoriginを'use-credentials'に設定します。例
例えば、output.publicPathをhttps://example.com/に、output.crossOriginLoadingを'anonymous'に設定します。
RspackがJavaScriptリソースを動的に読み込む場合、次のHTMLを生成します。
string | (pathData: PathData, assetInfo?: JsAssetInfo) => stringoutput.chunkFilenameによって決定されます。それ以外の場合は'[id].css'。このオプションは、ディスク上の非初期CSS出力ファイルの名前を決定します。可能な値の詳細については、output.filenameオプションを参照してください。
絶対パスをここに指定することはできません。ただし、'/'で区切られたフォルダを含めることができます。指定されたパスは、output.pathの値と組み合わされて、ディスク上の場所を特定します。
string | (pathData: PathData, assetInfo?: JsAssetInfo) => stringoutput.filenameによって決定されます。このオプションは、ディスク上のCSS出力ファイルの名前を決定します。可能な値の詳細については、output.filenameオプションを参照してください。
絶対パスをここに指定することはできません。ただし、'/'で区切られたフォルダを含めることができます。指定されたパスは、output.pathの値と組み合わされて、ディスク上の場所を特定します。
string | function (info)undefined上記のテンプレート文字列または関数が重複した結果を生成した場合に使用されるフォールバック。
output.devtoolModuleFilenameTemplateを参照してください。
string = 'webpack://[namespace]/[resource-path]?[loaders]' | function (info) => stringundefinedこのオプションは、devtoolがモジュール名が必要なオプションを使用する場合にのみ使用されます。
各ソースマップのsources配列で使用される名前をカスタマイズします。テンプレート文字列または関数を渡すことで実行できます。たとえば、devtool: 'eval'を使用する場合などです。
テンプレート文字列では、次の置換を使用できます。
| テンプレート | 説明 |
|---|---|
| [absolute-resource-path] | 絶対ファイル名 |
| [all-loaders] | 最初のローダーの名前までの自動および明示的なローダーとパラメーター |
| [hash] | モジュール識別子のハッシュ |
| [id] | モジュール識別子 |
| [loaders] | 最初のローダーの名前までの明示的なローダーとパラメーター |
| [resource] | ファイルを解決するために使用されるパスと、最初のローダーで使用されるクエリパラメーター |
| [resource-path] | クエリパラメーターを含まない、ファイルを解決するために使用されるパス |
| [namespace] | モジュールの名前空間。ライブラリとしてビルドする場合、通常はライブラリ名、それ以外の場合は空 |
関数を使用する場合、同じオプションはキャメルケースでinfoパラメーターを介して使用できます。
複数のモジュールが同じ名前になる場合、これらのモジュールには代わりにoutput.devtoolFallbackModuleFilenameTemplateが使用されます。
stringundefinedこのオプションは、output.devtoolModuleFilenameTemplateで使用されるモジュール名の名前空間を決定します。指定されていない場合、output.uniqueNameの値がデフォルトになります。これは、複数のRspackでビルドされたライブラリを読み込む場合に、ソースマップ内のソースファイルパスの衝突を防ぐために使用されます。
たとえば、名前空間がlibrary1とlibrary2で、どちらも./src/index.jsファイル(内容は異なる可能性があります)を持つ2つのライブラリがある場合、これらのファイルはwebpack://library1/./src/index.jsとwebpack://library2/./src/index.jsとして公開されます。
('jsonp' | 'import-scripts' | 'require' | 'async-node' | string)[]output.chunkLoading、output.workerChunkLoading、およびエントリのchunkLoading設定によって決定されます。エントリポイントで使用可能なチャンク読み込みタイプのリスト。Rspackによって自動的に設定されます。エントリオプションとして関数を使用し、そこからchunkLoadingオプションを返す場合にのみ必要です。
string[]エントリポイントで使用可能なライブラリタイプのリスト。
('fetch-streaming' | 'fetch' | 'async-node' | string | false)[]output.wasmLoadingとoutput.workerWasmLoadingによって決定されます。エントリポイントで使用可能なWasm読み込みタイプのリスト。
生成されたランタイムコードで使用できるES機能の種類をRspackに指示します。
string | (pathData: PathData, assetInfo?: JsAssetInfo) => string[output.module](#outputmodule)がtrueの場合、'[name].mjs'、それ以外の場合は'[name].js'。このオプションは、各出力バンドルの名前を決定します。バンドルは、output.pathオプションで指定されたディレクトリに書き込まれます。
単一のentryポイントの場合、これは静的な名前になります。
しかし、複数のエントリポイント、コード分割、またはさまざまなプラグインを介して複数のバンドルを作成する場合、次のいずれかの置換を使用して、各バンドルに一意の名前を付ける必要があります...
Rspackは、ユーザー入力コードに対してコード分割の最適化を実行します。これには、コード分割、バンドル分割、または他のプラグインを介して実装された分割が含まれますが、これらに限定されません。これらの分割アクションにより、複数のバンドルが生成される可能性があるため、バンドルのファイル名は動的に生成する必要があります。
Entry名を使用する
内部チャンクIDを使用する
生成されたコンテンツから生成されたハッシュを使用する
複数の置換を組み合わせる
ファイル名を返す関数を使用する
このオプションはfilenameと呼ばれていますが、'js/[name]/bundle.js'のようなものを使用してフォルダ構造を作成することもできます。
このオプションは、オンデマンドでロードされるチャンクの出力ファイルには影響しません。最初にロードされる出力ファイルのみに影響します。オンデマンドでロードされるチャンクファイルの場合、output.chunkFilenameオプションが使用されます。ローダーによって作成されたファイルも影響を受けません。この場合、特定のローダーで使用可能なオプションを試す必要があります。
以下のテンプレート文字列を使用して、対応するファイル名を置き換えることができます。異なるコンテキストは異なる置換可能なコンテンツに対応します。例:output.assetModuleFilenameはファイルコンテキストとモジュールコンテキストの使用をサポートしています。
コンパイルレベルで置き換え可能なコンテンツ。
| テンプレート | 説明 |
|---|---|
| [fullhash] | コンパイルのフルハッシュ |
チャンクレベルで置き換え可能なコンテンツ。
| テンプレート | 説明 |
|---|---|
| [id] | 現在のチャンクID |
| [name] | チャンク名が存在する場合は名前を使用し、存在しない場合はチャンクIDを使用する |
| [chunkhash] | 現在のチャンク内のすべてのtypeの要素から計算された、チャンクのハッシュ値 |
| [contenthash] | そのtypeのコンテンツのみを含む要素から計算された、チャンクのハッシュ値。たとえば、JavaScriptタイプのモジュールが生成された場合、現在のチャンク内のすべてのJavaScriptタイプのモジュールのハッシュのみが使用されます。 |
モジュールレベルで置き換え可能なコンテンツ。
| テンプレート | 説明 |
|---|---|
| [id] | モジュールのID |
| [hash] | モジュールのハッシュ |
| [contenthash] | モジュールコンテンツのハッシュ |
ファイルレベルで置き換え可能なコンテンツ。
| テンプレート | 説明 |
|---|---|
| [file] | クエリまたはフラグメントを含まないファイル名とパス |
| [query] | 先頭に?が付いたクエリ |
| [fragment] | 先頭に#が付いたフラグメント |
| [base] | パスを含まないファイル名のみ(拡張子を含む) |
| [filebase] | 同じですが、非推奨 |
| [path] | ファイル名を含まないパスのみ |
| [name] | 拡張子またはパスを含まないファイル名のみ |
| [ext] | 先頭に.が付いた拡張子(output.filenameでは使用できません) |
URLレベルで使用可能な置換
| テンプレート | 説明 |
|---|---|
| [url] | URL |
[file]は[path][base]と等しく、[base]は[name][ext]と等しいです。フルパスは[path][name][ext][query][fragment]または[path][base][query][fragment]または[file][query][fragment]です。
ハッシュの長さ([hash]、[contenthash]、または[chunkhash])は、[hash:12]を使用して指定できます(デフォルトは16)。または、output.hashDigestLengthを指定してグローバルに長さを設定します。
プレースホルダーを実際のファイル名で使用したい場合、プレースホルダーの置換をフィルタリングできます。たとえば、[name].jsというファイルを生成するには、ブラケットの間にバックスラッシュを追加して[name]プレースホルダーをエスケープする必要があります。そのため、[\name\]は[name]を生成し、アセットのnameで置き換えられることはありません。
例:[\id\]は[id]を生成し、idで置き換えられることはありません。
このオプションに関数を使用する場合、その関数には、上記の表の置換に関するデータを含むオブジェクトが渡されます。置換は返された文字列にも適用されます。渡されたオブジェクトは次の型になります。(コンテキストに応じて使用可能なプロパティ)
string'self'ライブラリを対象とする場合、特にlibrary.typeが'umd'の場合、このオプションはライブラリのマウントに使用するグローバルオブジェクトを示します。UMDビルドをブラウザとNode.jsの両方で使用できるようにするには、output.globalObjectオプションを'this'に設定します。Webのようなターゲットでは、デフォルトでselfになります。
エントリポイントの戻り値は、output.library.nameの値を使用してグローバルオブジェクトに割り当てられます。typeオプションの値に応じて、グローバルオブジェクトはself、global、globalThisなど、それぞれ変更される可能性があります。
例として
string'hex'ハッシュを生成する際に使用するエンコーディング。ファイル名に'base64'を使用することは、そのアルファベットに/文字が含まれているため問題になる可能性があります。同様に、'latin1'には任意の文字が含まれる可能性があります。
number16使用するハッシュダイジェストのプレフィックスの長さ。
'md4' | 'xxhash64''xxhash64'使用するハッシュアルゴリズム。
Rspackは、v1.1以降、デフォルトでより高速なxxhash64アルゴリズムを使用しています。
stringundefinedハッシュを更新するためのオプションのソルト。
string"[id].[fullhash].hot-update.js"ホットアップデートチャンクのファイル名をカスタマイズします。可能な値の詳細については、output.filenameオプションを参照してください。
ここで許可されるプレースホルダーは[id]と[fullhash]のみで、デフォルトは
通常、output.hotUpdateChunkFilenameを変更する必要はありません。
string"webpackHotUpdate" + output.uniqueNametargetが'web'に設定されている場合にのみ使用され、ホットアップデートのロードにJSONPを使用します。
JSONP関数は、ホットアップデートチャンクを非同期的にロードするために使用されます。
詳細については、output.chunkLoadingGlobalを参照してください。
string"[runtime].[fullhash].hot-update.json"メインホットアップデートファイル名をカスタマイズします。[fullhash]と[runtime]をプレースホルダーとして使用できます。
通常、output.hotUpdateMainFilenameを変更する必要はありません。
booleantrueRspackに、出力されたコードの周りにIIFEラッパーを追加するように指示します。
string'import'ネイティブのimport()関数の名前。たとえば、dynamic-import-polyfillを使用してポリフィルに使用できます。
string'import.meta'ネイティブのimport.metaオブジェクトの名前(ポリフィルと交換できます)。
エントリポイントのエクスポートを公開するライブラリを出力します。
string | string[] | object例を見てみましょう。
src/index.jsエントリに関数をエクスポートしたとします。
これで、変数MyLibraryはエントリファイルのエクスポートにバインドされ、Rspackバンドルされたライブラリの使用方法を示します。
上記の例では、単一のエントリファイルをentryに渡していますが、Rspackは様々な種類のエントリポイント(例:配列またはオブジェクト)を受け入れることができます。
entryポイントとして配列を提供した場合、配列の最後にあるものだけが公開されます。
entryポイントとしてオブジェクトを提供した場合、libraryの配列構文を使用して、すべてのエントリを公開できます。
a.jsとb.jsの両方が関数helloをエクスポートすると仮定して、ライブラリの使用方法を示します。
stringAMDモジュールでdefine/require関数を呼び出すためのコンテナ(グローバル空間に定義)を使用します。
amdContainer の値は、グローバル変数として設定する必要があります。
これにより、次のバンドルが生成されます。
ライブラリの名前を指定します。
string | string[] | {amd?: string, commonjs?: string, root?: string | string[]}ライブラリの公開方法を構成します。
型: string
デフォルトで含まれる型は、'var'、'module'、'system'、'assign'、'assign-properties'、'this'、'window'、'self'、'global'、'commonjs'、'commonjs2'、'commonjs-module'、'commonjs-static'、'amd'、'amd-require'、'umd'、'umd2'ですが、プラグインによって他の型が追加される場合があります。
以降の例では、エントリポイントによって返される値を示すために_entry_return_を使用します。
これらのオプションは、エントリポイントの戻り値(つまり、エントリポイントがエクスポートした内容)を、バンドルが組み込まれたスコープでoutput.library.nameによって指定された名前に割り当てます。
ライブラリがロードされると、エントリポイントの戻り値が変数に割り当てられます。
これにより、既存の値を再割り当てする可能性のある暗黙的なグローバル変数が生成されます(注意して使用してください)。
MyLibraryが事前に定義されていない場合、ライブラリはグローバルスコープに設定されることに注意してください。
type: 'assign'と似ていますが、MyLibraryが既に存在する場合はそれを再利用するため、より安全なオプションです。
これらのオプションは、エントリポイントの戻り値(つまり、エントリポイントがエクスポートした内容)を、output.library.nameで定義された名前の下の特定のオブジェクトに割り当てます。
エントリポイントの戻り値は、output.library.nameで指定されたプロパティの下のthisに割り当てられます。thisの意味はユーザーが決定します。
エントリポイントの戻り値は、output.library.nameの値を使用してwindowオブジェクトに割り当てられます。
エントリポイントの戻り値は、output.library.nameの値を使用してグローバルオブジェクトに割り当てられます。targetの値に応じて、グローバルオブジェクトはself、global、globalThisなどに変わることがあります。
エントリポイントの戻り値は、output.library.nameの値を使用してexportsオブジェクトに割り当てられます。名前が示すように、これはCommonJS環境で使用されます。
output.library.nameを設定しないと、エントリポイントによって返されるすべてのプロパティが指定されたオブジェクトに割り当てられます。既存のプロパティ名に対するチェックはありません。
これらのオプションは、さまざまなモジュールシステムとの互換性を確保するための完全なヘッダーを含むバンドルを生成します。output.library.nameオプションは、次のoutput.library.typeオプションでは異なる意味を持ちます。
ESモジュールを出力します。
ただし、この機能はまだ実験的なものであり、完全にはサポートされていないため、事前にexperiments.outputModuleを有効にしてください。さらに、このスレッドで開発の進捗状況を追跡できます。
エントリポイントの戻り値はmodule.exportsに割り当てられます。名前が示すように、これはNode.js(CommonJS)環境で使用されます。
type: commmonjs2でoutput.library.nameを指定すると、エントリポイントの戻り値はmodule.exports.[output.library.name]に割り当てられます。
CommonJSとCommonJS2の違いについて疑問に思っていますか?両者は似ていますが、Rspackのコンテキストでは通常は関係のない微妙な違いがあります。(詳細については、このissueをお読みください。)
個々のエクスポートはmodule.exportsのプロパティとして設定されます。「static」という名前は、出力が静的に分析可能であり、したがって名前付きエクスポートがNode.jsを介してESMにインポート可能であることを意味します。
入力
出力
使用例 (CommonJS)
使用例 (ESM)
これにより、ライブラリはAMDモジュールとして公開されます。
AMDモジュールでは、エントリチャンク(つまり、<script>タグによってロードされた最初のスクリプト)を、defineやrequireなどの特定のプロパティで定義する必要があります。これは通常、RequireJSまたは互換性のあるローダー(almondなど)によって提供されます。それ以外の場合は、生成されたAMDバンドルを直接ロードすると、define is not definedのようなエラーが発生します。
次の設定の場合
生成された出力は、"MyLibrary"という名前で定義されます。
バンドルはスクリプトタグの一部として含めることができ、バンドルは次のように呼び出すことができます。
output.library.nameが未定義の場合、代わりに次のものが生成されます。
このバンドルは、<script>タグで直接ロードした場合、期待通りに動作しないか、まったく動作しません(almondローダーの場合)。これは、そのファイルへの実際のパスを介してRequireJS互換の非同期モジュールローダーでのみ動作するため、この場合、これらのファイルがサーバーで直接公開されている場合、output.pathとoutput.filenameがこの特定の設定で重要になる可能性があります。
これにより、すぐに実行されるAMD require(dependencies, factory)ラッパーを使用して出力がパッケージ化されます。
'amd-require'型では、別の後続の呼び出しを必要とせずにAMD依存関係を使用できます。'amd'型と同様に、これは、Rspackの出力がロードされる環境で適切なrequire関数が利用可能であるかどうかに依存します。
この型では、ライブラリ名を使用できません。
これにより、すべてのモジュール定義でライブラリが公開され、CommonJS、AMD、グローバル変数として機能します。UMDリポジトリで詳細を確認してください。
この場合、モジュールに名前を付けるにはlibrary.nameプロパティが必要です。
そして最後に、出力は次のようになります。
library.nameを省略すると、オブジェクト割り当てセクションで説明されているように、エントリポイントによって返されるすべてのプロパティがルートオブジェクトに直接割り当てられます。例
出力は次のようになります。
ターゲットごとに異なる名前を指定するために、library.nameにオブジェクトを指定できます。
これにより、ライブラリはSystem.registerモジュールとして公開されます。
Systemモジュールでは、Rspackバンドルが実行されるときにブラウザにグローバル変数Systemが存在する必要があります。System.register形式にコンパイルすると、追加の設定なしでSystem.import('/bundle.js')を実行でき、RspackバンドルがSystemモジュールレジストリにロードされます。
出力
output.library.typeをsystemに設定することに加えて、設定にoutput.library.nameを追加すると、出力バンドルはライブラリ名をSystem.registerの引数として持つようになります。
type: 'jsonp'
これにより、エントリポイントの戻り値がjsonpラッパーにラップされます。
ライブラリの依存関係は、externals設定によって定義されます。
ライブラリとして公開するエクスポートを指定します。
string | string[]undefinedデフォルトではundefinedであり、全体の(名前空間)オブジェクトをエクスポートします。以下の例は、output.library.type: 'var'を使用する場合のこの設定の効果を示しています。
エントリポイントのデフォルトエクスポートは、ライブラリ名に割り当てられます。
output.library.exportに配列を渡すこともできます。これは、ライブラリ名に割り当てるモジュールへのパスとして解釈されます。
そして、これがライブラリコードです。
UMDラッパーにコメントを追加します。
string | { amd?: string, commonjs?: string, commonjs2?: string, root?: string }undefined各umd型に同じコメントを挿入するには、auxiliaryCommentを文字列に設定します。
これにより、次のようになります。
きめ細かい制御を行うには、オブジェクトを渡します。
booleanundefinedoutput.library.type: "umd"を使用する場合、output.library.umdNamedDefineをtrueに設定すると、UMDビルドのAMDモジュールに名前が付けられます。それ以外の場合は、匿名のdefineが使用されます。
AMDモジュールは次のようになります。
booleanfalseJavaScriptファイルをモジュール型として出力します。実験的な機能であるため、デフォルトでは無効になっています。使用するには、experiments.outputModuleをtrueに設定する必要があります。
有効にした場合、Rspack は内部的に output.iife を false、output.scriptType を 'module'、terserOptions.module を true に設定します。
他者が利用するライブラリをコンパイルするために Rspack を使用している場合、output.module が true のときは、output.libraryTarget を 'module' に設定してください。
stringpath.resolve(process.cwd(), 'dist')出力ディレクトリ(絶対パス)。
このパラメータ内の [fullhash] は、コンパイルのハッシュに置き換えられます。
パスには感嘆符(!)を含めることはできません(ローダー構文のために Rspack によって予約されています)。
boolean | 'verbose'trueバンドルに含まれるモジュールに関する情報をコメントとして含めるよう Rspack に指示します。このオプションは、development モードでは true、production モード では false がデフォルトです。'verbose' は、エクスポート、ランタイム要件、およびベイルアウトなどの詳細情報を表示します。
これらのコメントによって提供されるデータは、生成されたコードを読む際の開発中に役立ちますが、本番環境では使用しないでください。
また、ツリーシェイキングに関する情報も生成されたバンドルに追加します。
'auto' | string | ((pathData: PathData, assetInfo?: JsAssetInfo) => string)targets が 'web' または 'webworker' の場合 'auto'。それ以外の場合は undefinedこのオプションは、画像やファイルなどの参照リソースのURL接頭辞を決定します。
例えば、設定ファイルがあるとします。
非初期チャンクファイルの場合、リクエストURLは次のようになります。/assets/1.chunk.js。
画像への参照の場合、リクエストURLは次のようになります。/assets/logo.png。
また、CDNを使用して製品を展開する場合にも役立ちます。
すべての資産リソースについて、それらのリクエストURLは次のようになります。https://cdn.example.com/assets/logo.png。
動的にpublicPathを設定する
ランタイムコードで__webpack_public_path__を使用してpublicPathを動的に設定できます。__webpack_public_path__はRspackの設定内のpublicPathを上書きしますが、動的にロードされたリソースにのみ有効になります。
まず、publicPath.jsを作成します。
次に、エントリファイルの最初の行にインポートします。
'module' | 'text/javascript' | booleanfalseこのオプションにより、<script type="module" ...>など、カスタムスクリプトタイプで非同期チャンクをロードできます。
output.module が true に設定されている場合、output.scriptType は false ではなく 'module' がデフォルトになります。
string'[file].map[query]'devtool が出力ファイルを作成する 'source-map' に設定されている場合にのみ有効になります。
output.filename の [name]、[id]、[fullhash]、[chunkhash] 置換を使用できます。それらに加えて、テンプレート文字列 のファイル名レベルに記載されている置換を使用できます。
booleanfalseパフォーマンスコストを考慮して、ECMAScriptモジュール仕様に従ってモジュールのロードエラーを処理します。
例外がスローされた場合にモジュールをモジュールインスタンスキャッシュ(require.cache)から削除するようRspackに指示します。
true | string | objectundefinedTrusted Types の互換性を制御します。有効にすると、Rspack は Trusted Types のサポートを検出し、サポートされている場合は、Trusted Types ポリシーを使用して、動的にロードするスクリプト URL を作成します。require-trusted-types-for Content Security Policy ディレクティブの下でアプリケーションが実行される場合に使用します。
デフォルトでは無効になっています(互換性なし、スクリプト URL は文字列です)。
true に設定すると、Rspack は output.uniqueName を Trusted Types ポリシー名として使用します。policyName プロパティから取得されます。stringoutput.library 名、またはコンテキスト内の package.json からのパッケージ名にデフォルトで設定されます。どちらも見つからない場合、'' に設定されます。グローバルを使用する場合、複数のRspackランタイムが競合しないようにするためのRspackビルドの一意の名前。
output.uniqueName は、次の項目の一意のグローバルを生成するために使用されます。
false | 'fetch', 'async-node''fetch'WebAssemblyモジュールのロード方法を設定するためのオプション。デフォルトで含まれる方法は'fetch'(web/webworker)、'async-node'(Node.js)ですが、プラグインによって他の方法が追加される場合があります。
デフォルト値は、異なるtargetによって影響を受ける可能性があります。
targetが'web'、'webworker'、'electron-renderer'、または'node-webkit'に設定されている場合、デフォルトは'fetch'です。targetが'node'、'async-node'、'electron-main'、または'electron-preload'に設定されている場合、デフォルトは'async-node'です。string'[hash].module.wasm'WebAssemblyモジュールのファイル名を指定します。output.pathディレクトリ内の相対パスとして指定する必要があります。
false | 'jsonp' | 'import-scripts' | 'require' | 'async-node' | 'import'false新しいオプションworkerChunkLoadingは、ワーカーのチャンクの読み込みを制御します。
このオプションのデフォルト値はtargetの設定によって異なります。詳細については、Rspackのデフォルト設定で"workerChunkLoading"を検索してください。
string""ワーカーのpublicPathを設定します。output.publicPathの値がデフォルトです。ワーカースクリプトが他のスクリプトとは異なるパスにある場合にのみ、このオプションを使用してください。
false | 'fetch-streaming' | 'fetch' | 'async-node' | stringfalseワーカー内のWebAssemblyモジュールのロード方法を設定するためのオプションで、output.wasmLoadingの値がデフォルトです。
output.library.auxiliaryComment を代わりに使用することをお勧めします。
このサポートを削除する可能性があるため、libraryExport と同じように動作する output.library.export を代わりに使用することをお勧めします。
将来的に output.libraryTarget のサポートを削除する可能性があるため、代わりに output.library.type を使用してください。
output.library.umdNamedDefine を代わりに使用することをお勧めします。
booleanfalse、本番モードでは trueRspack は CSS モジュールを解析するために CSS にいくつかのメタデータを追加し、この設定はこれらのメタデータを圧縮するかどうかを決定します。
例として
圧縮後 👇