本节介绍如何指定支持的目标环境。
通过设置 lib.syntax,你可以选择 JavaScript 和 CSS 将被降级到的语法。你可以使用 Browserslist 的查询语法。Rslib 还支持常见的 ECMAScript 版本号,例如 ES2015
。
Rslib 还支持使用 .browserslistrc 文件来设置。需要注意的是,lib.syntax 优先于 .browserslistrc
。如果两者都存在,将使用 lib.syntax
。
默认情况下,syntax 被设置为 ESNext
,这代表将仅支持主流浏览器(Chrome / Firefox / Edge / macOS Safari / iOS Safari)或 Node.js 的最新版本,具体取决于 output.target。
在处理兼容性问题之前,建议了解以下背景知识,以便更好地处理相关问题。请查看有关 语法降级和 API 降级 的背景知识。
通常,我们不需要为 npm 包注入 polyfill,这个步骤应该在 web 应用框架侧完成,但在某些场景下,我们需要注入 polyfill 以使我们的库直接在低版本浏览器中运行。
需要注意的是,这个插件不会转换你的代码语法,它只会为代码中使用的未支持函数注入 polyfill,将它们作为普通函数导入,而不是污染全局。你需要安装 core-js-pure 依赖。
polyfill 依赖于 Babel 注入 polyfill 代码,因此你需要安装 Rsbuild Babel 插件 和 babel-plugin-polyfill-corejs3 来注入 polyfill 代码。
并安装 core-js-pure 作为运行时依赖代码。
配置 Babel 插件,设置 targets 字段以指定目标浏览器版本。
更多详细信息,请查看 babel-plugin-polyfill-corejs3 文档。
通常,我们不需要在浏览器侧使用 Node 库。然而,在某些情况下,代码将在 Node 侧和浏览器侧运行,Node Polyfill 提供了这些 Node 库的浏览器版本 polyfill。
通过使用 @rsbuild/plugin-node-polyfill,Node 核心库的 polyfill 会自动注入到浏览器侧,允许你在浏览器侧使用这些模块。
Rslib 使用 @rsbuild/plugin-node-polyfill 提供 Node Polyfill 功能。
然后将其添加到插件字段中。
对于启用了 bundle
的项目,Node Polyfill 将被注入并包含在输出中。
对于未启用 bundle
的项目,默认情况下不会注入 polyfill。为了避免在每个模块中内联 polyfill,模块需要被 external,并手动添加到依赖中,请按照以下步骤操作:
output.external
和 resolvedPolyfillToModules
,你可以从 @rsbuild/plugin-node-polyfill 导入。这将 polyfill 模块 external 到已安装的 polyfill 依赖中。通过以下步骤,每个 polyfill 模块的使用将被替换为 externals
字段中的相应模块。更多详细信息,请查看
更多详细信息,请查看 @rsbuild/plugin-node-polyfill 文档,所有配置均适用于 Rslib。