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