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