Skip to main content

@babel/compat-data

这个包提供了各种 JavaScript 功能在不同浏览器和运行环境下的兼容性数据。[@babel/preset-env](./preset-env.md) 内部使用它来确定给定一组 编译目标 所需的 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 pluginsCompatData from "@babel/compat-data/plugins" with { type: "json" };

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

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 是否支持对象剩余/展开,你不必手动对照兼容性数据条目。相反,你可以使用 @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()
);
};