功能時間軸
我們在每個 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 會議中達成共識的 decorators 提案更新
- 支援 inline RegExp modifiers 第 3 階段提案
JavaScript
/(?i-m:a.)/m.exec("a\nAb"); // ["Ab"]
Babel 7.20.0
- TypeScript 4.9 支援
- 解析器支援 explicit resource management 第 2 階段提案
JavaScript
{
using handle = openFile(name, "w+");
write(handle, "Hi!\n");
write(handle, ":)\n");
} // Automatically close the file - 解析器支援 import reflection 第 2 階段提案
JavaScript
import module mod from "./mod.js";
// later ...
import(mod);
babel-loader 9.0.0
Babel 7.19.0
- 支援 decorators 提案的第 3 階段版本
- 轉換支援 duplicate named capturing groups 第 3 階段提案
JavaScript
/(?<year>\d\d\d\d)-(?<month>\d\d)|(?<month>\d\d)-(?<year>\d\d\d\d)/
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++;
}
} - 支援 正規表示式集合符號和字串屬性 第 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
bugfixes
選項在@babel/preset-env
中,用於解決瀏覽器錯誤,而不是編譯整個功能- TypeScript 3.8 支援
- 支援 Flow
declare
類別欄位 - 支援 自動 JSX 執行時間
Babel 7.8.0
- 預設啟用 Optional Chaining 和 Nullish Coalescing 第 4 階段提案
- 支援
.mjs
組態檔
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
設定選項。 - 新增
"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")
)