Spec-Zone.ru › webpack 4

Узел

Эти параметры конфигурируют, следует ли подключать полифиллы или создавать имитации определенных глобальных объектов Node.js и модулей. Это позволяет коду, первоначально написанному для среды Node.js, работать в других средах, таких как браузер.

Эта функция предоставляется внутренним плагином webpack NodeStuffPlugin. Если целевая среда — "web" (по умолчанию) или "webworker", также активируется плагин NodeSourcePlugin.

node

boolean = false object

Это объект, где каждое свойство — имя глобального объекта Node или модуля, а каждое значение может быть одним из следующих...

  • true: Предоставить полифилл.
  • 'mock': Предоставить имитацию, которая реализует ожидаемый интерфейс, но имеет мало или совсем не имеет функциональности.
  • 'empty': Предоставить пустой объект.
  • false: Ничего не предоставлять. Код, ожидающий этот объект, может завершиться с ошибкой ReferenceError. Попытка импорта модуля с помощью require('modulename') может вызвать ошибку Cannot find module "modulename".

Не каждый глобальный объект Node поддерживает все четыре варианта. Компилятор выдаст ошибку для комбинаций свойство-значение, которые не поддерживаются (например, process: 'empty'). Более подробную информацию см. в разделах ниже.

Вот значения по умолчанию:

module.exports = {
  //...
  node: {
    console: false,
    global: true,
    process: true,
    __filename: 'mock',
    __dirname: 'mock',
    Buffer: true,
    setImmediate: true

    // See "Other node core libraries" for additional options.
  }
};

Начиная с webpack 3.0.0, параметр node может быть установлен в значение false для полного отключения плагинов NodeStuffPlugin и NodeSourcePlugin.

node.console

boolean = false string: 'mock'

Браузер предоставляет объект console с очень похожим интерфейсом на объект Node.js console, поэтому полифилл обычно не нужен.

node.process

boolean = true string: 'mock'

node.global

boolean = true

См. исходный код для точного поведения этого объекта.

node.__filename

string = 'mock' boolean

Параметры:

  • true: Имя файла входного файла относительно параметра context.
  • false: Стандартное поведение Node.js __filename. Имя файла выходного файла при выполнении в среде Node.js.
  • 'mock': Фиксированное значение 'index.js'.

node.__dirname

string = 'mock' boolean

Параметры:

  • true: Директория входного файла относительно параметра context.
  • false: Стандартное поведение Node.js __dirname. Директория выходного файла при выполнении в среде Node.js.
  • 'mock': Фиксированное значение '/'.

node.Buffer

boolean = true string: 'mock'

node.setImmediate

boolean = true string: 'mock' | 'empty'

Другие ядра Node

boolean string: 'mock' | 'empty'

Этот параметр активируется (через NodeSourcePlugin) только при отсутствии указанной целевой среды, или при "web" или "webworker".

Если доступны, используются полифиллы для ядра Node.js из node-libs-browser, когда включен плагин NodeSourcePlugin. См. список библиотек ядра Node.js и их полифиллов.

По умолчанию, webpack подключает каждый полифилл, если он известен, или не делает ничего, если его нет. В последнем случае webpack ведет себя так, как будто имя модуля было настроено со значением false.

Для импорта встроенного модуля используйте __non_webpack_require__, т.е. __non_webpack_require__('modulename') вместо require('modulename').

Пример:

module.exports = {
  //...
  node: {
    dns: 'mock',
    fs: 'empty',
    path: true,
    url: false
  }
};

© JS Foundation and other contributors
Licensed under the Creative Commons Attribution License 4.0.
https://v4.webpack.js.org/configuration/node

Spec-Zone.ru

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