CC 4.0 ライセンス
このセクションの内容は、以下のリンクの内容を元に作成されており、CC BY 4.0 ライセンスの対象となります。
特に明記されていない限り、以下の内容は元のコンテンツに基づいて修正と削除が行われた結果であるとみなすことができます。
モジュール変数
CommonJs
module.loaded
false
はモジュールが実行中であることを、true
は同期実行が完了したことを意味します。
module.id
現在のモジュールID。
src/main.js
module.id === require.resolve('./src/main.js'); // true
module.hot
ホットモジュール置換が有効かどうかを示し、プロセスへのインターフェースを提供します。詳細はHMR API ページを参照してください。
global
詳細はnode.js globalを参照してください。
Rspack は global をプロキシオブジェクトに置き換え、その中の互換性の問題を処理します。
コンパイル済み
__webpack_require__.g['property'];
// webpack/runtime/global
__webpack_require__.g = (function () {
// compatibility code
})();
__filename
設定 node.__filename
に依存します。
パーサーによって解析される式内で使用される場合、設定オプションはtrue
として扱われます。
__dirname
設定 node.__dirname
に依存します。
パーサーによって解析される式内で使用される場合、設定オプションはtrue
として扱われます。
import.meta (ESM)
import.meta
は、モジュールのURLなどのコンテキスト固有のメタデータをJavaScriptモジュールに公開します。ESMでのみ使用できます。
Rspackはimport.meta
への直接アクセスをサポートしていないことに注意してください。代わりに、そのプロパティにアクセスするか、デストラクチャリング代入を使用する必要があります。例:
ソース
import.meta
typeof import.meta
コンパイル済み
{
} // Warning: Direct access to import.meta is not supported (only property access or destructuring is supported)
('object');
import.meta.url
モジュールの絶対file:
URLを返します。
ソース
import.meta.url
typeof import.meta.url
コンパイル済み
'file://project_root/src/main.js';
'string';
import.meta.webpackContext
Rspack/Webpack 固有の
import.meta.webpackContext
は、一連のモジュールを動的にインポートできるwebpack固有の関数です。
コードでimport.meta.webpackContext
を使用でき、Rspackはビルドプロセス中に一致するモジュールを解析して参照します。
function webpackContext(
/**
* A directory to search.
*/
request: string,
options?: {
/**
* Whether subdirectories should be searched.
* @default true
*/
recursive?: boolean;
/**
* A regular expression to match files.
* @default /^\.\/.*$/ (any file)
*/
regExp?: RegExp;
/**
* Module loading mode.
* @default 'sync'
*/
mode?: 'sync' | 'eager' | 'weak' | 'lazy' | 'lazy-once';
include?: RegExp;
exclude?: RegExp;
preload?: boolean | number;
prefetch?: boolean | number;
chunkName?: string;
exports?: string | string[][];
},
): Context;
// Create a context, with files from the test directory that
// can be required with a request ending with `.test.js`.
const context = import.meta.webpackContext('./test', {
recursive: false,
regExp: /\.test\.js$/,
});
// Create a context with all files in the parent folder and
// descending folders ending with `.stories.js`.
const context = import.meta.webpackContext('../', {
recursive: true,
regExp: /\.stories\.js$/,
});
// If mode is set to 'lazy', the underlying modules will be loaded asynchronously
const context = import.meta.webpackContext('./locales', {
recursive: true,
regExp: /\.json$/,
mode: 'lazy',
});
ヒント
Rspackはコンパイル時にimport.meta.webpackContext()
のパラメーターを解析するために静的解析を使用します。そのため、パラメーターはリテラルでなければなりません。
たとえば、regExp
の値を変数にすることはできませんし、new RegExp()
によって生成された値にすることもできません。正規表現リテラルのみが可能です。
context API
import.meta.webpackContext()
によって返されるコンテキストは、request
引数(モジュールパス)を受け取る関数です。
この関数には、resolve
、keys
、id
の3つのプロパティがあります。
resolve
は関数であり、解析されたリクエストのモジュールIDを返します。
keys
は、コンテキストモジュールが処理できるすべてのリクエストの配列を返す関数です。
id
はコンテキストモジュールのモジュールIDです。module.hot.accept
に役立つ場合があります。
これは、ディレクトリ内のすべてのファイル、またはパターンに一致するファイルをrequireする場合に役立ちます。
次のようなフォルダ構造があるとします。
src ├── components │ ├── Button.js │ ├── Header.js │ └── Footer.js
import.meta.webpackContext()
を使用して、フォルダ内のすべてのコンポーネントファイルを動的にインポートできます。
const componentsContext = import.meta.webpackContext('./components', {
recursive: false,
regExp: /\.js$/,
});
componentsContext.keys().forEach(fileName => {
const componentModule = componentsContext(fileName);
// Here you can use your module, for example console.log
console.log(componentModule);
});
import.meta.webpackContext()
は、特に多くのファイルを管理する必要がある場合に、モジュールのインポートプロセスを簡素化します。使用する場合、不要なファイルの一致を避けてください。これにより、ビルド時間と出力サイズが大幅に増加する可能性があります。
import.meta.webpackHot
Rspack/Webpack 固有の
module.hot
のエイリアスですが、import.meta.webpackHot
は厳密なESMで使用できますが、module.hot
は使用できません。
ランタイム
__webpack_hash__
Rspack/Webpack 固有の
コンパイルのハッシュへのアクセスを提供します。
コンパイル済み
__webpack_require__.h();
// webpack/runtime/get_full_hash
__webpack_require__.h = function () {
return '9210c6f859a51c6f9a62';
};
__webpack_runtime_id__
Rspack/Webpack 固有の
現在のエントリのランタイムIDにアクセスします。
コンパイル済み
__webpack_require__.j;
// webpack/runtime/runtime_id
__webpack_require__.j = '909';
__webpack_public_path__
Rspack/Webpack 固有の
設定オプションのoutput.publicPath
と等しくなります。
コンパイル済み
__webpack_require__.p;
// output.publicPath !== "auto"
__webpack_require__.p = 'output.publicPath';
// output.publicPath === "auto",
__webpack_require__.p = 'calculated from document/location';
__webpack_base_uri__
Rspack/Webpack 固有の
ランタイムでベースURIを取得または変更します。
コンパイル済み
__webpack_require__.b;
// chunk loading
__webpack_require__.b = document.baseURI || self.location.href;
__webpack_nonce__
Rspack/Webpack 固有の
Rspackは、ロードするすべてのスクリプトにnonceを追加できます。この機能を有効にするには、__webpack_nonce__
変数を設定し、エントリスクリプトに含めます。
ソース
__webpack_nonce__ = 'your_nonce_code';
コンパイル済み
__webpack_require__.nc = '2312312';
// webpack/runtime/load_script
if (__webpack_require__.nc) {
script.setAttribute('nonce', __webpack_require__.nc);
}
モジュール
__webpack_modules__
Rspack/Webpack 固有の
すべてのモジュールの内部オブジェクトへのアクセス。
コンパイル済み
var __webpack_modules__ = {
'main.js': function () {
__webpack_require__.m;
},
};
__webpack_require__.m = __webpack_modules__;
__webpack_module__
Rspack/Webpack 固有の
現在のmodule
へのアクセスを提供します。module
は厳密なESMでは使用できません。
コンパイル済み
"main.js": function(renamed_module) {
renamed_module
}
__webpack_module__.id
Rspack/Webpack 固有の
現在のモジュールのID(module.id
)へのアクセスを提供します。module
は厳密なESMでは使用できません。
コンパイル済み
"main.js": function(renamed_module) {
renamed_module.id
}
__webpack_require__
Rspack/Webpack 固有の
生のrequire関数。この式は、依存関係のパーサーによって解析されません。
ソース
__webpack_require__('./dep.js')
コンパイル済み
"main.js": function(_, __, renamed_require) {
renamed_require('./dep.js')
}
__non_webpack_require__
Rspack/Webpack 固有の
webpackによって解析されないrequire
関数を生成します。グローバルなrequire関数が使用可能な場合、それを用いて高度な処理を行うために使用できます。
ソース
__non_webpack_require__('outer.js')
コンパイル済み
"main.js": function(_, __, __webpack_require__) {
require('outer.js')
}
__webpack_is_included__
Rspack/Webpack 固有の
指定されたモジュールがwebpackによってバンドルされているかどうかをテストします。
ソース
if (__webpack_is_included__('./dep.js')) {
// do something
}
コンパイル済み
if (true) {
// do something
}
__resourceQuery
Rspack/Webpack 固有の
現在のモジュールのリソースクエリ。次のrequire
呼び出しが行われた場合、クエリ文字列はfile.js
で使用できます。
__webpack_exports_info__
モジュールにおいて、エクスポートのイントロスペクションを可能にするために__webpack_exports_info__
が利用可能です。
__webpack_exports_info__
は常にtrue
です。
- エクスポートが未使用であることがわかっている場合、
__webpack_exports_info__.<exportName>.used
はfalse
となり、それ以外の場合はtrue
となります。
__webpack_exports_info__.<exportName>.useInfo
は次のようになります。
- エクスポートが未使用であることがわかっている場合
false
- エクスポートが使用されていることがわかっている場合
true
- エクスポートの使用が実行時条件に依存する可能性がある場合
null
- 情報が利用できない場合
undefined
__webpack_exports_info__.<exportName>.provideInfo
は次のようになります。
- エクスポートが提供されていないことがわかっている場合
false
- エクスポートが提供されていることがわかっている場合
true
- エクスポートの提供が実行時条件に依存する可能性がある場合
null
- 情報が利用できない場合
undefined
- ネストされたエクスポートからの情報へのアクセスも可能です。例:
__webpack_exports_info__.<exportName>.<exportProperty1>.<exportProperty2>.used
__webpack_exports_info__.<exportName>.canMangle
を使用して、エクスポートを難読化できるかどうかを確認します。
ソース
if (__webpack_exports_info__.someUsedExport.used) { }
if (__webpack_exports_info__.someUnusedExport.used) { }
コンパイル済み
if (true) {
}
if (false) {
}
チャンク
__webpack_chunkname__
Rspack/Webpack 固有の
現在のチャンク名を取得します。
コンパイル済み
__webpack_require__.cn;
// webpack/runtime/chunk_name
__webpack_require__.cn = 'main';
__webpack_chunk_load__
Rspack/Webpack 固有の
内部チャンク読み込み関数です。1つの引数を取ります。
コンパイル済み
__webpack_require__.e;
// webpack/runtime/ensure_chunk
__webpack_require__.e = function (chunkId) {
// return chunk loading promise
};
1つのチャンクの読み込みに失敗した場合に、代替パブリックパスからチャンクを読み込む例
const originalLoad = __webpack_chunk_load__;
const publicPaths = ['a', 'b', 'c'];
__webpack_chunk_load__ = async id => {
let error;
for (const path of publicPaths) {
__webpack_public_path__ = path;
try {
return await originalLoad(id);
} catch (e) {
error = e;
}
}
throw error;
};
import('./module-a').then(moduleA => {
// now webpack will use the custom __webpack_chunk_load__ to load chunk
});
__webpack_get_script_filename__
IDからチャンクのファイル名を提供します。
ソース
__webpack_get_script_filename__
コンパイル済み
__webpack_require__.u;
// webpack/runtime/get_chunk_filename
__webpack_require__.u = function (chunkId) {
// ...
};
代入可能であり、ランタイムで使用されるファイル名を変更できます。たとえば、チャンクを読み込む際の最終的なパスを決定するために使用できます。
const oldFn = __webpack_get_script_filename__;
__webpack_get_script_filename__ = chunkId => {
const filename = oldFn(chunkId);
return filename + '.changed';
};
Module Federation
__webpack_share_scopes__
Rspack/Webpack 固有の
このオブジェクトはリモートコンテナで共有スコープとして使用され、ホストから提供されたモジュールで満たされます。
__webpack_init_sharing__
Rspack/Webpack 固有の
このメソッドは、ホストコンテナで共有スコープのモジュールを初期化するために使用されます。
System.js
__system_context__
Rspack/Webpack 固有の
output.libraryTarget="system"
の場合のSystem.jsからのコンテキスト。
Rspack
__rspack_version__
Rspack のみ
現在のRspackバージョン。デフォルトは@rspack/core/package.json
のバージョンですが、experiments.rspackFuture.bundlerInfo.versionで変更できます。
コンパイル済み
__webpack_require__.rv;
// webpack/runtime/rspack_version
__webpack_require__.rv = '0.7.4';
__rspack_unique_id__
現在のバンドラのID。値はbundler={bundler}@{version}
です。- bundler
: デフォルトは"rspack"
で、experiments.rspackFuture.bundlerInfo.bundler
で変更できます。
version
: デフォルトは@rspack/core/package.json
のバージョンで、experiments.rspackFuture.bundlerInfo.version
で変更できます。
コンパイル済み
__webpack_require__.ruid;
// webpack/runtime/rspack_unique_id
__webpack_require__.ruid = 'bundler=rspack@0.7.4';