このセクションでは、Webpackでコンパイルされたコードで使用可能なすべての**変数**について説明します。モジュールは、module
およびその他の変数を通じて、コンパイルプロセスからの特定のデータにアクセスできます。
モジュールが現在実行中であればfalse
、同期実行が完了していればtrue
になります。
ホットモジュール置換 (Hot Module Replacement)が有効かどうかを示し、プロセスへのインターフェースを提供します。詳細はHMR APIページを参照してください。
現在のモジュールのID。
module.id === require.resolve('./file.js');
コンシューマーがモジュールに対してrequire
呼び出しを行う際に返される値を定義します(デフォルトは新しいオブジェクト)。
module.exports = function doSomething() {
// Do something...
};
この変数は、module.exports
のデフォルト値(つまり、オブジェクト)と等しくなります。module.exports
が上書きされると、exports
はエクスポートされなくなります。
exports.someValue = 42;
exports.anObject = {
x: 123,
};
exports.aFunction = function doSomething() {
// Do something
};
node.js globalを参照してください。
互換性のため、Webpackはデフォルトでglobal
変数をポリフィルします。
設定オプションnode.__dirname
によって異なります。
false
: 定義されていません。mock
: '/'
と等しくなります。true
: node.js __dirnameパーサーによって解析される式内で使用される場合、設定オプションはtrue
として扱われます。
import.meta
は、モジュールのURLなどのコンテキスト固有のメタデータをJavaScriptモジュールに公開します。ESMでのみ使用できます。
Webpackはimport.meta
への直接アクセスをサポートしていないことに注意してください。代わりに、そのプロパティにアクセスするか、デストラクチャリング代入を使用する必要があります。例:
// webpack will warn about this
Object.keys(import.meta);
// fine to use
console.log(import.meta.url);
const { url } = import.meta;
モジュールの絶対file:
URLを返します。
src/index.js
console.log(import.meta.url); // output something like `file:///path/to/your/project/src/index.js`
Webpackのバージョンを返します。
src/index.js
console.log(import.meta.webpack); // output `5` for webpack 5
Webpack固有。 module.hot
のエイリアスですが、import.meta.webpackHot
は厳格なESMで使用できますが、module.hot
は使用できません。
javascript/auto
とjavascript/esm
に対してのみ、require.context
と同じ値を返します。
型
(
request: string,
options?: {
recursive?: boolean;
regExp?: RegExp;
include?: RegExp;
exclude?: RegExp;
preload?: boolean | number;
prefetch?: boolean | number;
chunkName?: string;
exports?: string | string[][];
mode?: 'sync' | 'eager' | 'weak' | 'lazy' | 'lazy-once';
}
) => webpack.Context;
利用可能: 5.70.0以上
例
const contextRequire = import.meta.webpackContext('.', {
recursive: false,
regExp: /two/,
mode: 'weak',
exclude: /three/,
});
設定オプションnode.__filename
によって異なります。
false
: 定義されていません。mock
: '/index.js'
と等しくなります。true
: node.js __filenameパーサーによって解析される式内で使用される場合、設定オプションはtrue
として扱われます。
現在のモジュールのリソースクエリ。次のrequire
呼び出しが行われた場合、クエリ文字列はfile.js
で使用できます。
require('file.js?test');
file.js
__resourceQuery === '?test';
設定オプションのoutput.publicPath
と等しくなります。
生のrequire関数。この式は、依存関係についてはパーサーによって解析されません。
内部チャンク読み込み関数。1つの引数をとります。
chunkId
読み込むチャンクのID。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
});
現在のmodule
へのアクセスを提供します。module
は厳格なESMでは使用できません。
現在のmodule
のID (module.id
)へのアクセスを提供します。module
は厳格なESMでは使用できません。
すべてのモジュールの内部オブジェクトへのアクセス。
コンパイルのハッシュへのアクセスを提供します。
function (chunkId)
そのIDによるチャンクのファイル名を返します。
割り当て可能で、ランタイムで使用されるファイル名を変更できます。たとえば、チャンクの読み込み時の最終パスを決定するために使用できます。
const oldFn = __webpack_get_script_filename__;
__webpack_get_script_filename__ = (chunkId) => {
const filename = oldFn(chunkId);
return filename + '.changed';
};
Webpackによって解析されないrequire
関数を生成します。グローバルなrequire関数が使用可能な場合、クールなことを行うために使用できます。
モジュールでは、__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>.<exportName>.<exportName>.used
__webpack_exports_info__.<name>.canMangle
でエクスポートを難読化できるかどうかを確認します。
指定されたモジュールがWebpackによってバンドルされているかどうかをテストします。
if (__webpack_is_included__('./module-a.js')) {
// do something
}
ランタイムでベースURIを変更します。
型: string
利用可能: 5.21.0以上
例
__webpack_base_uri__ = 'https://example.com';
現在のエントリのランタイム IDにアクセスします。
これはWebpack固有の機能であり、Webpack 5.25.0以降で使用できます。
src/index.js
console.log(__webpack_runtime_id__ === 'main');
設定オプションdebug
と等しくなります。