# 功能时间表
我们在每个 Babel 版本中引入了哪些主要的新特性?此页面包含每个次要版本的非常简短的摘要,或者您可以在 GitHub 上 (opens new window) 阅读完整的更新日志!此外,使用此时间线来跟踪其他一些重要的工作,例如babel-polyfills (opens new window) 项目。
# Babel7.21.0 (opens new window)
博文
打字稿 5.0支持- 支持更新* 在 2023 年 1 月 TC39 会议上达成共识的*
decorators提案 - 支持*
内联 RegExp 修饰符Stage 3 提案JavaScript
/(?i-m:a.)/m.exec("a\nAb"); // ["Ab"]
# Babel7.20.0 (opens new window)
博文
打字稿 4.9支持对显式资源管理 (opens new window) 第 2 阶段提案的解析器支持
JavaScript
{
using handle = openFile(name, "w+");
write(handle, "Hi!\n");
write(handle, ":)\n");
} // Automatically close the file
- 对导入反射 (opens new window) 第 2 阶段提案的解析器支持
JavaScript
import module mod from "./mod.js";
// later ...
import(mod);
# babel-loader 9.0.0
发布
# Babel7.19.0 (opens new window)
博文
- 支持第三阶段版本的*
装饰器提案 - 转换对*
重复命名捕获组Stage 3 提案的支持JavaScript
/(?<year>\d\d\d\d)-(?<month>\d\d)|(?<month>\d\d)-(?<year>\d\d\d\d)/
# Babel7.18.0 (opens new window)
博文
打字稿 4.7支持转换对Private destructuringStage 2 提案的支持JavaScript
class A {
#x = 2;
method() {
const { #x: x } = this;
}
}
regenerator-runtime编译生成器时不再需要手动包含帮助程序
# Babel7.17.0 (opens new window)
博文
- 支持新版装饰器 (opens new window) Stage 2 提案
JavaScript
class A {
@reactive #x = 2;
@logger
method() {
this.#x++;
}
}
- 支持字符串第 2 阶段提案的 RegExp 集合符号和属性 (opens new window)
JavaScript
/[\p{RGI_Emoji}&&[\0-\uFFFF]]/v;
- 对私有解构 (opens new window) 阶段 2 提案的解析器支持
JavaScript
class A {
#x = 2;
method() {
const { #x: x } = this;
}
}
# Babel7.16.0 (opens new window)
博文
- 默认* 启用*
类静态块Stage 4 提案JavaScript
class A {
static {
initialize(A);
}
}
打字稿 4.5支持支持*
ESLint 8in@babel/eslint-parser.
# Babel7.15.0 (opens new window)
博文
- 默认* 启用对*
顶级Stage 4 提案的解析awaitJavaScript
import db from "db";
await db.connect();
- 默认* 启用*
私人品牌检查第 4 阶段提案JavaScript
class A {
static { initialize(A); } // static block
#field;
is(obj) {
return #field in obj; // private brand check
}
}
- 支持“Hack-style” *
pipeline operatorStage 2 提案JavaScript
const result = "World" |> `Hello, ${%}!` |> alert(%);
打字稿 4.4支持
# Babel7.14.0 (opens new window)
博文
- 默认* 启用*
Class Fields、Private Methods和Static Class Features Stage 4 proposals (opens new window) - 将*
私有品牌检查和静态类块 (opens new window) 建议添加到@babel/preset-env的shippedProposals (opens new window) JavaScript
class A {
static { initialize(A); } // static block
#field;
is(obj) {
return #field in obj; // private brand check
}
}
- 支持*
async do表达式提案JavaScript
let valP = async do {
2 + await computeIt();
};
支持*
importInterop: "node"中的选项@babel/plugin-transform-modules-commonjs,使 Babel 符合 Node.js 行为打字稿 4.3支持
# Babel7.13.0 (opens new window)
博文
- 顶级*
targets选项 (RFC) - 粒度编译器假设(*
文档,RFC (opens new window) ) - 支持*
记录和元组提案JavaScript
let rec = #{ x: 1 };
let tup = #[1, 2, 3];
打字稿 4.2支持
# Babel7.12.0 (opens new window)
博文
- 支持*
类静态块提案JavaScript
class A {
static { initialize(A); }
}
- 支持*
导入和导出字符串名称JavaScript
let happy = "wooo!";
export { happy as "😃" };
对Import Assertions提议的解析器支持JavaScript
import json from "./foo.json" assert { type: "json" };
打字稿 4.1支持
# Babel7.11.0 (opens new window)
博文
- 默认* 启用*
逻辑分配和数字分隔符第 4 阶段提案 对Decimal提案的解析器支持JavaScript
console.assert(0.1m + 0.2m === 0.3m);
打字稿 4.0支持
# @babel/eslint- parser
博文
# Babel7.10.0 (opens new window)
博文
import.meta默认启用对 Stage 4 提案的解析器支持- 支持*
Private Fields提案的人体工程学品牌检查JavaScript
class Car {
#plate;
race(other) {
if (#plate in other) console.log("Racing against another car!");
}
}
# babel- polyfills
存储库
# Babel7.9.0 (opens new window)
博文
bugfixes中的选项@babel/preset-env,解决浏览器错误而不是编译整个功能打字稿 3.8支持支持流*
declare类字段支持*
自动JSX 运行时
# Babel7.8.0 (opens new window)
博文
默认* 启用*
Optional Chaining和Nullish Coalescing Stage 4 提案支持*
.mjs配置文件
# Babel7.7.0 (opens new window)
博文
对顶级await提案的解析器支持
JavaScript
import db from "./database.js";
await db.connect();
添加对 Early Errors 的错误恢复支持
@babel/parser支持
.json和.cjs配置文件打字稿 3.7支持
# Babel7.6.0 (opens new window)
博文
- 支持静态私有访问器, *
静态类特性提案的一部分JavaScript
class Dog {
static get #className() { return "Dog"; }
}
# Babel7.5.0 (opens new window)
博文
- 支持*
F# 管道运算符提案JavaScript
num |> add(2) |> double
打字稿*
namespace支持
# Babel7.4.0 (opens new window)
博文
- 支持注入*
core-js@3polyfill - 支持*
部分申请提案JavaScript
strings.map(parseInt(?));
- 支持静态私有方法,部分 *
静态类特性提案JavaScript
class Dog {
static #register() { /* ... */ }
}
打字稿 3.4支持
# Babel7.3.0 (opens new window)
博文
- 支持实例私有访问器, *
私有方法提案的一部分JavaScript
class Dog {
get #randomId() { return Math.random(); }
}
- 支持*
智能管道运营商提案JavaScript
num |> add(2, #) |> double
- 支持 * 正则表达式中的*
命名捕获组JavaScript
str.match({String.raw`/^(?<year>\d{4})-(?<month>\d{2})-(?<day>\d{2})$/`})
TypeScript 3.2 和 2.9 支持
# Babel7.2.0 (opens new window)
博文
- 支持实例私有方法,*
私有方法提案的一部分JavaScript
class Dog {
#bark() { console.log("Mew!") }
}
# Babel7.1.0 (opens new window)
博文
- 支持*
装饰器提案,因为它在 2018 年 9 月指定JavaScript
class Person {
@autoIncrement age;
}
- 支持静态私有字段,*
静态类特性提案的一部分JavaScript
class Person {
static #classId = 3;
}
# Babel7 (opens new window)
博文
自 2 年的预发布以来,这有很多变化。
- 放弃对未维护的节点版本的支持:0.10、0.12、4、5
- 切换到作用域包 ( *
babel-coreto@babel/core) - 删除年度预设 ( *
@babel/preset-es2015) 和阶段预设 (@babel/preset-stage-0)(博客文章 (opens new window) )。 - 在某些情况下添加了“纯”( *
/*#__PURE__*/) 注释支持。(稍后实现为@babel/helper-annotate-as-pure (opens new window) - 添加项目范围的*
babel.config.js配置文件 (docs) 和overrides (opens new window) 配置选项。 - 添加*
"useBuiltIns: "usage"到@babel/preset-env (opens new window) - 支持 TypeScript 通过*
@babel/preset-typescript - 支持 JSX 片段*
<></> - 支持大量 TC39 提案:
Unicode 属性正则表达式JSON超集new.target类私有实例字段(class A { #b = 2 })可选的捕捉绑定try { throw 0 } catch { do() }BigInt(仅语法)import.meta(仅语法)(import.meta.url)数字分隔符(1_000)function.sent可选链接(a?.b)逻辑赋值运算符(a &&= b; a ||= b)无效合并运算符(a ?? b)管道操作员(a |> b)抛出表达式(() => throw new Error("a"))