Node 配置
webpackjsorg-main配置参考
Node 配置
以下 Node.js 选项用于配置是否对某些 Node.js 全局变量 进行 polyfill 或 mock。
该功能由 webpack 内部的 NodeStuffPlugin 插件提供。
警告: 从 webpack 5 开始,你只能在
node选项下配置global、__filename/import.meta.filename或__dirname/import.meta.dirname。如果你正在寻找如何在 webpack 5 下对类似fs的 Node.js 模块进行 polyfill,请查看 resolve.fallback 获取帮助。
node
false object
webpack.config.js
js
export default {
// ...
node: {
global: false,
__filename: false,
__dirname: false,
},
};
可以将 node 选项设置为 false,以完全关闭 NodeStuffPlugin 插件。
node.global
boolean 'warn'
提示: 如果你使用的模块需要其中的全局变量,请使用
ProvidePlugin而不是global。
关于此对象的精确行为,请参阅 Node.js 文档。
选项:
true:提供 polyfill,如果你的环境支持则使用globalThis,请参阅environment选项。false:不提供任何内容。期望使用此对象的代码可能会抛出ReferenceError而崩溃。'warn':使用global时显示警告。
node.__filename
boolean 'mock' | 'warn-mock' | 'node-module' | 'eval-only'
选项:
true:输入文件相对于context选项 的文件名。false:webpack 不会修改你的__filename和import.meta.filename代码,这意味着你拥有常规的 Node.js__filename和import.meta.filename行为。在 Node.js 环境中运行时,该值为输出文件的文件名。'mock':固定值'/index.js'。'warn-mock':使用固定值'/index.js',但会显示警告。'node-module':当output.module启用时,将 CommonJS 模块中的__filename和 ES 模块中的import.meta.filename代码替换为fileURLToPath(import.meta.url)。'eval-only':将__filename/import.meta.filename的解析延迟到执行时的 Node.js 运行时,但在require/import等构造中对其进行求值,以便正确解析模块。根据output.module选项,将__filename替换为import.meta.filename,反之亦然(如果你的环境不支持import.meta.filename,将使用import.meta.url作为回退来获取该值)。
默认值可能受不同的 target 影响:
- 如果
target设置为'node'或类 Node 环境(async-node、electron),或混合目标(同时包含web和node),则默认为'eval-only'。 - 如果
target设置为'web'或类 Web 环境,则默认为'mock'。
node.__dirname
boolean 'mock' | 'warn-mock' | 'node-module' | 'eval-only'
选项:
true:输入文件相对于context选项 的目录名。false:webpack 不会修改你的__dirname和import.meta.dirname代码,这意味着你拥有常规的 Node.js__dirname和import.meta.dirname行为。在 Node.js 环境中运行时,该值为输出文件的目录名。'mock':固定值'/'。'warn-mock':使用固定值'/',但会显示警告。'node-module':当output.module启用时,将 CommonJS 模块中的__dirname替换为fileURLToPath(import.meta.url + "/..")。'eval-only':将__dirname/import.meta.dirname的解析延迟到执行时的 Node.js 运行时,但在require/import等构造中对其进行求值,以便正确解析模块。根据output.module选项,将__dirname替换为import.meta.dirname,反之亦然(如果你的环境不支持import.meta.filename,将使用import.meta.url作为回退来获取该值)。
默认值可能受不同的 target 影响:
帮助我们改进文档
发现翻译问题或内容错误?请告诉我们。
