Узел
Эти параметры конфигурируют, следует ли подключать полифиллы или создавать имитации определенных глобальных объектов 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