@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
- Yarn
- pnpm
npm install --save-dev @babel/compat-data
yarn add --dev @babel/compat-data
pnpm add --save-dev @babel/compat-data
用法
¥Usage
插件
¥plugins
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:
{
"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
:
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()
);
};