Skip to main content

@babel/compat-data

此软件包提供了各种 JavaScript 特性在不同浏览器和运行时环境中的兼容性数据。@babel/preset-env 在内部使用它来确定给定 编译目标 集合所需的 Babel 插件。兼容数据从 compat-table 项目 中提取。

¥This package provides compatibility data for various JavaScript features across different browser and runtime environments. It is used by @babel/preset-env internally to determine the required Babel plugins for a given set of compilation targets. The compat data is extracted from the compat-table project.

安装

¥Install

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

用法

¥Usage

插件

¥plugins

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

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

¥The pluginsCompatData is an object with the Babel plugin short name as the key and a compat data entry as its value. Each entry is an object with a browser name as the key and the minimum supported version as its value.

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

¥For example, pluginsCompatData["transform-object-rest-spread"] will return an object:

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"
}

此处,支持 object-rest-spread 的最低 Chrome 版本是 60。因此,只有当用户编译到早于 60 的 Chrome 版本时,@babel/preset-env 才会启用 object-rest-spread 转换,其他浏览器也一样。检查 source 中是否有支持的 Babel 插件短名称。

¥Here, the minimum Chrome version with object-rest-spread support is 60. Therefore, @babel/preset-env will enable the object-rest-spread transform only if users are compiling to Chrome versions older than 60, and likewise for other browsers. Check the source for supported Babel plugin short names.

如果你想知道任何给定的 targets 是否支持 object-rest-spread,则无需手动将其与 compat-data 条目进行比较。或者,你可以使用 @babel/helper-compilation-targets 中的 isRequired 实用程序:

¥If you would like to know whether object-rest-spread is supported for any given targets, you don't have to manually compare it against the compat-data entry. Instead, you can use the isRequired utility from @babel/helper-compilation-targets:

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()
);
};