功能时间线
我们在每个 Babel 版本中引入了哪些主要的新功能?本页包含每个*次要*版本的简短摘要,您也可以阅读GitHub 上的完整变更日志!此外,使用此时间线跟踪其他一些重要工作,例如 babel-polyfills 项目。
Babel 7.24.0
- 支持 JSON 模块 第 3 阶段提案
Babel 7.23.0
Babel 7.22.0
- 默认启用第 4 阶段 RegExp
v
标志 提案 - 支持 显式资源管理 提案第 3 阶段提案,包括 异步版本JavaScript
{
await using db = connect(databaseURL);
let user = await db.getUserById(userId);
await db.createPost(user.name, "Hi! :)");
} // Automatically close the db - 支持在 2023 年 3 月和 2023 年 5 月的 TC39 会议上达成共识的 装饰器 提案的更新
- 解析支持第 3 阶段 导入属性 提案,以前称为“导入断言”
JavaScript
import data from "./data.json" with { type: "json" };
- 默认启用第 4 阶段 RegExp
Babel 7.21.0
- 支持 TypeScript 5.0
- 支持在 2023 年 1 月的 TC39 会议上达成共识的 装饰器 提案的更新
- 支持 内联 RegExp 修饰符 第 3 阶段提案
JavaScript
/(?i-m:a.)/m.exec("a\nAb"); // ["Ab"]
Babel 7.20.0
- 支持 TypeScript 4.9
- 解析器支持 显式资源管理 第 2 阶段提案
JavaScript
{
using handle = openFile(name, "w+");
write(handle, "Hi!\n");
write(handle, ":)\n");
} // Automatically close the file - 解析器支持 导入反射 第 2 阶段提案
JavaScript
import module mod from "./mod.js";
// later ...
import(mod);
babel-loader 9.0.0
Babel 7.19.0
Babel 7.18.0
- 支持 TypeScript 4.7
- 转换支持 私有解构 第 2 阶段提案
JavaScript
class A {
#x = 2;
method() {
const { #x: x } = this;
}
} - 编译生成器时不再需要手动包含
regenerator-runtime
辅助函数
Babel 7.17.0
- 支持新版本的 装饰器 第 2 阶段提案
JavaScript
class A {
@reactive #x = 2;
@logger
method() {
this.#x++;
}
} - 支持 RegExp 集合表示法和字符串属性 第 2 阶段提案
JavaScript
/[\p{RGI_Emoji}&&[\0-\uFFFF]]/v;
- 解析器支持 私有解构 第 2 阶段提案
JavaScript
class A {
#x = 2;
method() {
const { #x: x } = this;
}
}
- 支持新版本的 装饰器 第 2 阶段提案
Babel 7.16.0
- 默认启用 类静态块 第 4 阶段提案
JavaScript
class A {
static {
initialize(A);
}
} - 支持 TypeScript 4.5
- 在
@babel/eslint-parser
中支持 ESLint 8。
- 默认启用 类静态块 第 4 阶段提案
Babel 7.15.0
- 默认启用对 顶级
await
第 4 阶段提案的解析支持JavaScriptimport 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 风格”的 管道运算符 第 2 阶段提案
JavaScript
const result = "World" |> `Hello, ${%}!` |> alert(%);
- 支持 TypeScript 4.4
- 默认启用对 顶级
Babel 7.14.0
- 默认启用 类字段、私有方法 和 静态类功能 第 4 阶段提案
- 将 私有品牌检查 和 静态类块 提案添加到
@babel/preset-env
的shippedProposals
JavaScriptclass A {
static { initialize(A); } // static block
#field;
is(obj) {
return #field in obj; // private brand check
}
} - 支持
async do
表达式 提案JavaScriptlet valP = async do {
2 + await computeIt();
}; - 在
@babel/plugin-transform-modules-commonjs
中支持importInterop: "node"
选项,使 Babel 与 Node.js 行为保持一致 - 支持 TypeScript 4.3
Babel 7.13.0
Babel 7.12.0
- 支持 类静态块 提案
JavaScript
class A {
static { initialize(A); }
} - 支持 导入和导出字符串名称JavaScript
let happy = "wooo!";
export { happy as "😃" }; - 解析器支持 导入断言 提案
JavaScript
import json from "./foo.json" assert { type: "json" };
- 支持 TypeScript 4.1
- 支持 类静态块 提案
Babel 7.11.0
- 默认启用 逻辑赋值 和 数字分隔符 第 4 阶段提案
- 解析器支持 十进制 提案
JavaScript
console.assert(0.1m + 0.2m === 0.3m);
- 支持 TypeScript 4.0
@babel/eslint-parser
Babel 7.10.0
- 默认启用对
import.meta
第 4 阶段提案的解析器支持 - 支持 私有字段的人体工程学品牌检查 提案
JavaScript
class Car {
#plate;
race(other) {
if (#plate in other) console.log("Racing against another car!");
}
}
- 默认启用对
babel-polyfills
Babel 7.9.0
@babel/preset-env
中的bugfixes
选项,用于解决浏览器错误,而不是编译整个功能- 支持 TypeScript 3.8
- 支持 Flow
declare
类字段 - 支持 自动 JSX 运行时
Babel 7.8.0
Babel 7.7.0
- 解析器支持 顶级
await
提案JavaScriptimport db from "./database.js";
await db.connect(); - 在
@babel/parser
中为早期错误添加错误恢复支持 - 支持
.json
和.cjs
配置文件 - 支持 TypeScript 3.7
- 解析器支持 顶级
Babel 7.6.0
- 对静态私有访问器的支持,静态类特性提案的一部分
JavaScript
class Dog {
static get #className() { return "Dog"; }
}
- 对静态私有访问器的支持,静态类特性提案的一部分
Babel 7.5.0
- 支持 F# 管道运算符 提案
JavaScript
num |> add(2) |> double
- 支持 TypeScript
namespace
- 支持 F# 管道运算符 提案
Babel 7.4.0
- 支持注入
core-js@3
polyfill - 支持 部分应用 提案
JavaScript
strings.map(parseInt(?));
- 支持静态私有方法,静态类特性提案的一部分
JavaScript
class Dog {
static #register() { /* ... */ }
} - 支持 TypeScript 3.4
- 支持注入
Babel 7.3.0
Babel 7.2.0
- 支持实例私有方法,私有方法提案的一部分
JavaScript
class Dog {
#bark() { console.log("Mew!") }
}
- 支持实例私有方法,私有方法提案的一部分
Babel 7.1.0
Babel 7
自 2 年的预发布版本以来,这有更多变化。
- 放弃对未维护的 Node 版本的支持:0.10、0.12、4、5
- 切换到作用域包(从
babel-core
到@babel/core
) - 删除年度预设(
@babel/preset-es2015
)和阶段预设(@babel/preset-stage-0
)(博客文章)。 - 在某些情况下添加了“纯”(
/*#__PURE__*/
)注释支持。(后来实现为 @babel/helper-annotate-as-pure - 添加项目范围的
babel.config.js
配置文件(文档)和overrides
配置选项。 - 在
@babel/preset-env
中添加了"useBuiltIns: "usage"
- 通过
@babel/preset-typescript
支持 TypeScript - 支持 JSX 片段
<></>
- 支持大量 TC39 提案
- Unicode 属性正则表达式
- JSON 超集
new.target
- 类私有实例字段 (
class A { #b = 2 }
) - 可选 Catch 绑定
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 表达式 (
() => throw new Error("a")
)