特性时间表
我们在每个 Babel 版本中引入了哪些主要新功能?本页面包含每个小版本的简短概要,或者你可以在 GitHub 上查看完整的更新日志! 此外,你可以使用这个时间线来追踪其他一些重要工作,比如 babel-polyfills 项目。
🌐 Which major new features did we introduce in each Babel version? This page includes a very short summary for each minor release, or you can read the full changelog on GitHub! Additionally, use this timeline to track some other important efforts, such as the babel-polyfills project.
Babel 8.0.0
- 停止支持不再维护的 Node 版本:6、8、10、12、14、16、18、20、23、25
- 把 Babel 自己的代码库作为 ESM 发布
- 默认把代码转译成 ESM 和现代目标环境
- 弃用
loose和spec选项,改用assumptions - 从
@babel/preset-env和@babel/plugin-transform-runtime移除core-js支持,改用babel-plugin-polyfill-corejs3
Babel 7.29.0
- 支持在
@babel/standalone中配置targets<script>标签
- 支持在
Babel 7.28.0
- 默认启用显式资源管理提案
- 支持 discard binding 第二阶段提案
Babel 7.26.0
- 默认启用正则表达式修饰符 第4阶段提案
- 默认启用对 import attributes 第四阶段提案的解析
Babel 7.25.0
- 默认启用第4阶段的重复命名捕获组提案
Babel 7.24.0
- 支持 JSON 模块 的阶段 3 提案
Babel 7.23.0
Babel 7.22.0
-
默认启用第四阶段 正则表达式
v标志 提案 -
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 会议上达成共识的 decorators 提案的更新
-
对 Stage 3 导入属性 提案的解析支持,之前被称为“导入断言”
JavaScriptimport data from "./data.json" with { type: "json" };
-
Babel 7.21.0
-
支持在2023年1月TC39会议上达成共识的装饰器提案的更新
-
支持 内联正则表达式修饰符 第三阶段提案
JavaScript/(?i-m:a.)/m.exec("a\nAb"); // ["Ab"]
Babel 7.20.0
-
解析器对显式资源管理阶段2提案的支持
JavaScript{using handle = openFile(name, "w+");write(handle, "Hi!\n");write(handle, ":)\n");} // Automatically close the file -
解析器对 import reflection 第二阶段提案的支持
JavaScriptimport module mod from "./mod.js";// later ...import(mod);
babel-loader 9.0.0
Babel 7.19.0
-
支持 decorators 提案的第 3 阶段版本
-
为 重复命名捕获组 第3阶段提案 转换支持
JavaScript/(?<year>\d\d\d\d)-(?<month>\d\d)|(?<month>\d\d)-(?<year>\d\d\d\d)/
-
Babel 7.18.0
-
为 私有解构 第二阶段提案 转变支持
JavaScriptclass A {#x = 2;method() {const { #x: x } = this;}} -
编译生成器时不再需要手动包含
regenerator-runtime辅助工具
Babel 7.17.0
-
支持新版的 decorators 第二阶段提案
JavaScriptclass A {@reactive #x = 2;@loggermethod() {this.#x++;}} -
支持RegExp 集合符号和字符串属性第二阶段提案
JavaScript/[\p{RGI_Emoji}&&[\0-\uFFFF]]/v; -
解析器对私有解构阶段 2 提案的支持
JavaScriptclass A {#x = 2;method() {const { #x: x } = this;}}
-
Babel 7.16.0
Babel 7.15.0
-
默认启用对 顶层
await第4阶段提案的解析JavaScriptimport db from "db";await db.connect(); -
默认启用私有品牌检查第四阶段提案
JavaScriptclass A {static { initialize(A); } // static block#field;is(obj) {return #field in obj; // private brand check}} -
支持“Hack 风格”的 管道操作符 第二阶段提案
JavaScriptconst result = "World" |> `Hello, ${%}!` |> alert(%);
-
Babel 7.14.0
-
把私有品牌检查和静态类块的提案加到
@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 的行为保持一致
Babel 7.13.0
Babel 7.12.0
Babel 7.11.0
-
解析器对 Decimal 提案的支持
JavaScriptconsole.assert(0.1m + 0.2m === 0.3m);
@babel/eslint-parser
Babel 7.10.0
-
默认启用对
import.meta第4阶段提案的解析器支持 -
支持私有字段的人体工学品牌检查提案
JavaScriptclass Car {#plate;race(other) {if (#plate in other) console.log("Racing against another car!");}}
-
babel-polyfills
Babel 7.9.0
@babel/preset-env中的bugfixes选项,用来绕过浏览器的 bug,而不是编译整个功能- 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配置文件
-
Babel 7.6.0
-
对静态私有访问器的支持,属于 静态类功能 提案的一部分
JavaScriptclass Dog {static get #className() { return "Dog"; }}
-
Babel 7.5.0
-
支持 F# 管道操作符 提案
JavaScriptnum |> add(2) |> double -
TypeScript
namespace支持
-
Babel 7.4.0
Babel 7.3.0
Babel 7.2.0
-
支持实例私有方法,是私有方法提案的一部分
JavaScriptclass Dog {#bark() { console.log("Mew!") }}
-
Babel 7.1.0
Babel 7
自从它是 2 年的预发布以来,这有更多的变化。
🌐 This has a lot more changes since it was 2 years of pre-releases.
- 停止支持不再维护的 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配置选项。 - 已将
"useBuiltIns: "usage"添加到@babel/preset-env - 通过
@babel/preset-typescript支持 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"))