跳至主内容

@babel/compat-data

非官方测试版翻译

本页面由 PageTurner AI 翻译(测试版)。未经项目官方认可。 发现错误? 报告问题 →

此包提供了不同浏览器和运行时环境中各种 JavaScript 功能的兼容性数据。@babel/preset-env 内部使用这些数据,根据指定的编译目标确定所需的 Babel 插件。兼容性数据源自 compat-table 项目

安装

npm install --save-dev @babel/compat-data

用法

插件数据

my-babel-plugin.js
import _plugins from "@babel/compat-data/plugins";
const pluginsCompatData = _plugins.default;

pluginsCompatData 是一个对象,其键名为 Babel 插件简称,值为对应的兼容性数据条目。每个条目是以浏览器名称为键、最低支持版本为值的对象。

例如,pluginsCompatData["transform-object-rest-spread"] 将返回以下对象:

my-babel-plugin.js
{
"chrome": "60",
"opera": "47",
"edge": "79",
"firefox": "55",
"safari": "11.1",
"node": "8.3",
"deno": "1",
"ios": "11.3",
"samsung": "8",
"opera_mobile": "44",
"electron": "2.0"
}

此处,Chrome 支持对象展开运算符的最低版本为 60。因此,@babel/preset-env 仅当用户编译目标为低于 60 的 Chrome 版本时才会启用对象展开转换,其他浏览器同理。可查看源码获取支持的 Babel 插件简称列表。

若需判断特定 targets 是否支持对象展开运算符,无需手动对比兼容性数据条目。可直接使用 @babel/helper-compilation-targets 中的 isRequired 工具函数:

my-babel-plugin.js
import { isRequired } from "@babel/helper-compilation-targets";

module.exports = api => {
// Check if the targets have native object-rest-spread support
const objectRestSpreadSupported = !isRequired(
"transform-object-rest-spread",
api.targets()
);
};