close
CC 4.0 协议

本节内容派生于以下链接指向的内容 ,并遵守 CC BY 4.0 许可证的规定。

以下内容如果没有特殊声明,可以认为都是基于原内容的修改和删减后的结果。

Node

全局变量:该选项可以配置是否 polyfill 或 mock 某些 Node.js 全局变量

node.global

  • 类型: boolean | 'warn'
  • 默认值: 'warn'

控制 Rspack 在为非 Node 环境打包时,是否需要为 Node.js 的 global 对象提供 polyfill。

关于该对象的具体行为,请参考 Node.js 文档

可选值有:

  • true:Rspack 会注入 polyfill,使打包产物中能够使用 global。适用于依赖 Node.js 全局变量、但运行在非 Node 环境的代码。
  • false:不注入 polyfill。对 global 的引用将保持原样。如果目标环境不支持 global,运行时会抛出 ReferenceError
  • 'warn':行为与 true 相同,会注入 polyfill,同时在使用 global 时额外打印警告。

例如,禁用 global polyfill:

rspack.config.mjs
export default {
  node: {
    global: false,
  },
};

node.__filename

  • 类型: boolean | 'mock' | 'warn-mock' | 'eval-only'
  • 默认值: 'warn-mock',当启用 output.module 时为 'node-module'

控制 Rspack 在为非 Node 环境打包时,如何处理 Node.js 的 __filename 变量。

可选值有:

  • true:输入文件的文件名,是相对于 context 选项。
  • false:Rspack 不会更改 __filename 的代码。在 Node.js 环境中运行时输出文件的文件名。
  • 'mock':固定值为 '/index.js'。
  • 'warn-mock':使用固定值 '/index.js',但会发出警告。
  • 'node-module':当 output.module 启用时,将 CommonJS 模块中的 __filename 替换为 fileURLToPath(import.meta.url)
  • 'eval-only':等同于 false

例如,不对 __filename 进行任何处理:

rspack.config.mjs
export default {
  node: {
    __filename: false,
  },
};

node.__dirname

  • 类型: boolean | 'mock' | 'warn-mock' | 'eval-only'
  • 默认值: 'warn-mock',当启用 output.module 时为 'node-module'

控制 Rspack 在为非 Node 环境打包时,如何处理 Node.js 的 __dirname 变量。

可选值有:

  • true输入 文件的目录名,是相对于 context 选项。
  • false:Rspack 不会更改 __dirname 的代码,这意味着你有常规 Node.js 中的 __dirname 的行为。在 Node.js 环境中运行时,输出 文件的目录名。
  • 'mock':value 填充为 '/'
  • 'warn-mock':使用 '/' 但是会显示一个警告。
  • 'node-module': 当启用 output.module 时,将 CommonJS 模块中的 __dirname 替换为 fileURLToPath(import.meta.url + "/..")
  • 'eval-only':等同于 false

例如,不对 __dirname 进行任何处理:

rspack.config.mjs
export default {
  node: {
    __dirname: false,
  },
};