# 功能时间表

我们在每个 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)

博文

JavaScript

{
  using handle = openFile(name, "w+");
  write(handle, "Hi!\n");
  write(handle, ":)\n");
} // Automatically close the file

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 destructuring Stage 2 提案的支持JavaScript
class A {
  #x = 2;
  method() {
    const { #x: x } = this;
  }
}

  • regenerator-runtime编译生成器时不再需要手动包含帮助程序

# Babel7.17.0 (opens new window)

博文

JavaScript

class A {
  @reactive #x = 2;

  @logger
  method() {
    this.#x++;
  }
}

JavaScript

/[\p{RGI_Emoji}&&[\0-\uFFFF]]/v;

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 8 in @babel/eslint-parser.

# Babel7.15.0 (opens new window)

博文

  • 默认* 启用对* 顶级Stage 4 提案的解析await JavaScript
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 operator Stage 2 提案JavaScript
const result = "World" |> `Hello, ${%}!` |> alert(%);

  • 打字稿 4.4 支持

# Babel7.14.0 (opens new window)

博文

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 ChainingNullish 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-core to @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"))
Last Updated: 6/14/2023, 8:56:23 AM