本節涵蓋所有使用 webpack 編譯的程式碼中可用的變數。模組將透過 module
和其他變數存取編譯程式的特定資料。
如果模組目前正在執行,則為 false
;如果同步執行已完成,則為 true
。
表示是否已啟用熱模組替換,並提供一個處理程式的介面。有關詳細資訊,請參閱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如果在由 Parser 解析的表達式中使用,設定選項將視為 true
。
import.meta
會向 JavaScript 模組公開特定於內容的元資料,例如模組的 URL。它僅在 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
則不行。
傳回與 require.context
相同的值,但僅針對 javascript/auto
和 javascript/esm
。
類型
(
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如果在由 Parser 解析的表達式中使用,設定選項將視為 true
。
目前模組的資源查詢。如果進行以下 require
呼叫,則查詢字串會在 file.js
中可用。
require('file.js?test');
file.js
__resourceQuery === '?test';
等於組態選項的 output.publicPath
。
原始 require 函式。Parser 不會剖析此表達式以取得依賴項。
內部區塊載入函式。接收一個引數
chunkId
要載入的區塊 ID。範例:當一個區塊載入失敗時,從備用公開路徑載入區塊
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 中不可用。
存取所有模組的內部物件。
它提供存取編譯的雜湊。
函式 (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。
類型:字串
可用: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
。