Переменные модуля
В этом разделе рассматриваются все доступные переменные в коде, скомпилированном с помощью webpack. Модули получат доступ к определенным данным из процесса компиляции через module и другие переменные.
module.loaded (NodeJS)
Это false если модуль в настоящее время выполняется, и true если синхронное выполнение завершено.
module.hot (webpack-specific)
Указывает, включен ли горячий перезапуск модулей, и предоставляет интерфейс к этому процессу. Подробности см. на странице API горячего перезапуска.
module.id (CommonJS)
Идентификатор текущего модуля.
module.id === require.resolve('./file.js');
module.exports (CommonJS)
Определяет значение, которое будет возвращено при обращении к модулю потребителем (по умолчанию — новый объект).
module.exports = function doSomething() {
// Do something...
};
exports (CommonJS)
Эта переменная равна значению по умолчанию module.exports (т.е. объект). Если module.exports перезаписывается, exports больше не будет экспортироваться.
exports.someValue = 42;
exports.anObject = {
x: 123,
};
exports.aFunction = function doSomething() {
// Do something
};
global (NodeJS)
См. node.js global.
По соображениям совместимости webpack по умолчанию подключает переменную global.
__dirname (NodeJS)
В зависимости от параметра конфигурации node.__dirname:
-
false: Не определено -
mock: равно'/' -
true: node.js __dirname
Если используется внутри выражения, которое анализируется парсером, параметр конфигурации обрабатывается как true.
import.meta
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;
import.meta.url
Возвращает абсолютный file: URL модуля.
src/index.js
console.log(import.meta.url); // output something like `file:///path/to/your/project/src/index.js`
import.meta.webpack
Возвращает версию webpack.
src/index.js
console.log(import.meta.webpack); // output `5` for webpack 5
import.meta.webpackHot
Специфичная для webpack. Псевдоним для module.hot, однако import.meta.webpackHot может использоваться в строгом ESM, в то время как module.hot нет.
import.meta.webpackContext
Возвращает то же значение, что и 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/, });
__filename (NodeJS)
В зависимости от параметра конфигурации node.__filename:
-
false: Не определено -
mock: равно'/index.js' -
true: node.js __filename
Если используется внутри выражения, которое анализируется парсером, параметр конфигурации обрабатывается как true.
__resourceQuery (webpack-specific)
Запрос на ресурс текущего модуля. Если было выполнено следующее require обращение, то строка запроса будет доступна в file.js.
require('file.js?test');
file.js
__resourceQuery === '?test';
__webpack_public_path__ (webpack-specific)
Равно параметру конфигурации output.publicPath.
__webpack_require__ (webpack-specific)
Исходная функция require. Это выражение не анализируется парсером для зависимостей.
__webpack_chunk_load__ (webpack-specific)
Внутренняя функция загрузки чанков. Принимает один аргумент:
-
chunkIdИдентификатор чанка для загрузки.
Пример загрузки чанков из альтернативного пути к общедоступному, когда один из них не удался:
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_module__ (webpack-specific)
5.68.0+Предоставляет доступ к текущему module. module недоступен в строгом ESM.
__webpack_module__.id (webpack-specific)
5.68.0+Предоставляет доступ к идентификатору текущего module (module.id). module недоступен в строгом ESM.
__webpack_modules__ (webpack-specific)
Доступ к внутренней сущности всех модулей.
__webpack_hash__ (webpack-specific)
Предоставляет доступ к хэшу компиляции.
__webpack_get_script_filename__ (webpack-specific)
function (chunkId)
Предоставляет имя файла чанка по его идентификатору.
Он присваивается, что позволяет изменять имя файла, используемое исполняемой средой. Например, он может использоваться для определения конечного пути при загрузке чанков.
const oldFn = __webpack_get_script_filename__;
__webpack_get_script_filename__ = (chunkId) => {
const filename = oldFn(chunkId);
return filename + '.changed';
};
__non_webpack_require__ (webpack-specific)
Создаёт функцию require , которая не анализируется webpack. Может использоваться для выполнения интересных операций с глобальной функцией require, если она доступна.
__webpack_exports_info__ (webpack-specific)
В модулях __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_is_included__ (webpack-specific)
5.16.0+Проверка, включён ли данный модуль в webpack.
if (__webpack_is_included__('./module-a.js')) {
// do something
}
__webpack_base_uri__ (webpack-specific)
Изменение базового URI во время выполнения.
-
Тип:
string -
Доступно: 5.21.0+
-
Пример:
__webpack_base_uri__ = 'https://example.com';
__webpack_runtime_id__
Доступ к идентификатору исполняемой среды текущего входа .
Это функция, специфичная для webpack, и она доступна начиная с webpack 5.25.0.
src/index.js
console.log(__webpack_runtime_id__ === 'main');
DEBUG (webpack-specific)
Равно параметру конфигурации debug.
© JS Foundation and other contributors
Licensed under the Creative Commons Attribution License 4.0.
https://webpack.js.org/api/module-variables