Spec-Zone.ru › webpack 5

Переменные модуля

В этом разделе рассматриваются все доступные переменные в коде, скомпилированном с помощью 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

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API