W3Cschool
恭喜您成為首批注冊用戶
獲得88經(jīng)驗值獎勵
本章節(jié)涵蓋了使用 webpack 編譯的代碼中所有的變量。模塊將通過 module 和其他變量,來訪問編譯過程中的某些數(shù)據(jù)。
false 表示該模塊正在執(zhí)行, true 表示同步執(zhí)行已經(jīng)完成。
表示 模塊熱替換(Hot Module Replacement) 是否啟用,并給進程提供一個接口。詳細說明請查看 模塊熱替換 API 頁面。
當前模塊的 ID。
module.id === require.resolve('./file.js');
調(diào)用者通過 require 對模塊進行調(diào)用時返回的值(默認為一個新對象)。
module.exports = function doSomething() {
// Do something...
};
該變量默認值為 module.exports(即一個對象)。 如果 module.exports 被重寫的話, exports 不再會被導出。
exports.someValue = 42;
exports.anObject = {
x: 123,
};
exports.aFunction = function doSomething() {
// Do something
};
出于兼容性考慮,webpack 默認填充了 global 變量。
取決于 node.__dirname 配置選項:
如果在一個被 Parser 解析的表達式內(nèi)部使用,則配置選項會被當作 true 處理。
返回模塊以 file: 開頭絕對路徑的 URL。
src/index.js
console.log(import.meta.url); // 輸出結果類似于 `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
? 的一個別名,strict ESM 中可以使用 ?import.meta.webpackHot
? 但是不能使用 ?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;
const contextRequire = import.meta.webpackContext('.', {
recursive: false,
regExp: /two/,
mode: 'weak',
exclude: /three/,
});
取決于 ?node.__filename
? 配置選項:
'/index.js'
?node.js __filename
?如果在一個被 Parser 解析的表達式內(nèi)部使用,則配置選項會被當作 true 處理。
當前模塊的資源查詢(resource query) 。如果進行了如下的 reqiure 調(diào)用,那么查詢字符串(query string)在?file.js
? 中可訪問。
require('file.js?test');
file.js
__resourceQuery === '?test';
等同于 ?output.publicPath
? 配置選項。
原始 require 函數(shù)。這個表達式不會被解析器解析為依賴。
內(nèi)部 chunk 載入函數(shù),有一個輸入?yún)?shù):
當一個 chunk 加載失敗時,從備用公共路徑加載 chunk 的示例:
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
});
5.68.0+
它提供對當前 ?module
? 的訪問。?module
? 在 ESM 嚴格模式下不可用。
5.68.0+
它提供對當前 ?module(module.id)
? ID 的訪問。?module
? 在 ESM 嚴格模式下不可用。
訪問所有模塊的內(nèi)部對象。
這個變量提供對編譯過程中(compilation)的 hash 信息的訪問。
?function (chunkId)
?
它通過 chunk 的 id 提供 chunk 的文件名。
它是可分配的,允許更改運行時使用的文件名。例如,它可以用來確定加載 chunk 時的最終路徑。
const oldFn = __webpack_get_script_filename__;
__webpack_get_script_filename__ = (chunkId) => {
const filename = oldFn(chunkId);
return filename + '.changed';
};
生成一個不會被 webpack 解析的 require 函數(shù)。配合全局可以獲取到的 require 函數(shù),可以完成一些酷炫操作。
在模塊中, ?__webpack_exports_info__
? 可以被獲取到,以便導出模塊用以自我檢查:
__webpack_exports_info__
? 總是 true
__webpack_exports_info__
?.?<exportName>.used
?? 為 false, 否則是 true
?__webpack_exports_info__
?.?<exportName>.useInfo
?? 是 ? 4. ?__webpack_exports_info__?.?<exportName>.provideInfo
?是
5. 可以從嵌套的 exports 中得到相關信息: 例如?__webpack_exports_info__.<exportName>.<exportName>.<exportName>.used?
???
6. Check whether exports can be mangled with ?__webpack_exports_info__.<name>.canMangle
?
5.16.0+
測試給定的模塊是否被 webpack 打包。
if (__webpack_is_included__('./module-a.js')) {
// do something
}
運行時修改 base 的 URI。
__webpack_base_uri__ = 'https://example.com';
訪問當前入口的 runtime id。
這是一個 webpack 特性,并且在 webpack 5.25.0 后可用。
src/index.js
console.log(__webpack_runtime_id__ === 'main');
等同于 debug 配置選項。
Copyright©2021 w3cschool編程獅|閩ICP備15016281號-3|閩公網(wǎng)安備35020302033924號
違法和不良信息舉報電話:173-0602-2364|舉報郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號
聯(lián)系方式:
更多建議: