CC 4.0 许可

本节内容源自以下链接的内容,并受 CC BY 4.0 许可证的约束。

除非另有说明,否则以下内容可被认为是基于原始内容进行修改和删除的结果。

目标

用于配置 Rspack 输出的目标环境以及 Rspack 运行时代码的 ECMAScript 版本。

  • 类型: string | string[]

字符串

目前支持以下选项

选项 描述
'web' 编译为浏览器环境中可用(默认)
'webworker' 编译为 Web Worker
'browserslist' 根据配置的 browserslist 推断 ES-features 版本(如果 browserslist 配置可用,则为默认值)
'node[[X].Y]' 编译为 Node.js 环境中可用
'async-node[[X].Y]' 为类似 Node.js 的环境编译(使用 fs 和 vm 异步加载块)
'esX' 将 Rspack 运行时编译到相应的 ECMAScript 版本。当前支持 es3es5es2015es2016es2017es2018es2019es2020es2021es2022(默认使用 es5)
'electron[[X].Y]-main' 为 Electron 主进程编译。
'electron[[X].Y]-renderer' 为 Electron 渲染进程编译,提供一个目标,使用 array-push 作为 chunkFormat 和 jsonp 作为 chunkLoading 用于浏览器环境,以及 NodeTargetPluginExternalsPlugin 用于 CommonJS 和 Electron 内置模块。
'electron[[X].Y]-preload' 为 Electron 渲染进程的预加载脚本编译
'nwjs[[X].Y]' 编译为 NW.js 环境中可用
'node-webkit[[X].Y]' 编译为 node-webkit 环境中可用
esX 的范围

target 配置中的 esX 只能指定 Rspack 运行时代码的 ECMAScript 版本。如果您想指定用户代码的 ECMAScript 版本,可以使用 内置:swc-loaderbabel-loader 来降级用户代码。

示例

指定编译器需要编译到 Node.js 环境

rspack.config.js
module.exports = {
  target: 'node',
};

当传递多个目标时,将使用功能的公共子集

rspack.config.js
module.exports = {
  // Rspack will generate a runtime code for web platform and will use only ES5 features
  target: ['web', 'es5'],
};

请注意,目前并非所有目标都可以混合使用。当指定编译器需要为多个平台编译时,会报告错误

rspack.config.js
module.exports = {
  target: ['web', 'node'],
};

对于这种情况,您可以根据 MultiCompiler 定义多个 Rspack 配置来进行捆绑。

browserslist

如果项目具有 browserslist 配置,则 Rspack 将使用它来

  • 确定生成运行时代码时可以使用哪些 ES-features。
  • 推断环境(例如:last 2 node versionstarget: "node" 相同,带有一些 output.environment 设置)。
什么是 Browserslist

Browserslist 可以指定您的 Web 应用程序可以在哪些浏览器中运行,它提供了一个配置来指定浏览器范围。Browserslist 已成为行业标准,它被 Autoprefixer、Babel、ESLint、PostCSS、SWC 和 webpack 等库使用。

支持的 browserslist 值

  • browserslist - 使用自动解析的 browserslist 配置和环境(来自最近的 package.jsonBROWSERSLIST 环境变量,有关详细信息,请参阅 browserslist 文档
  • browserslist:modern - 使用来自自动解析的 browserslist 配置的 modern 环境
  • browserslist:last 2 versions - 使用显式 browserslist 查询(将忽略配置)
  • browserslist:/path/to/config - 显式指定 browserslist 配置
  • browserslist:/path/to/config:modern - 显式指定 browserslist 配置和环境

Node.js 版本

可以选择指定一个 Node 或 Electron 版本。 在上面的表格中用 [[X].Y] 表示。

rspack.config.js
module.exports = {
  // ...
  target: 'node18.12',
};

当 Rspack 生成运行时代码时,这有助于确定可以使用哪些 ES 功能(所有块和模块都由运行时代码包装)。

target: false

如果以上列表中没有预定义的目标满足您的需求,您可以将 target 设置为 false,这将指示 Rspack 不使用任何插件。

rspack.config.js
module.exports = {
  // ...
  target: false,
};