機能タイムライン
Babelの各バージョンで導入された主要な新機能は? このページには、各マイナーリリースの簡単な概要が記載されています。完全な変更ログはGitHubで読むことができます! また、このタイムラインを使用して、babel-polyfillsプロジェクトなど、その他の重要な取り組みを追跡することもできます。
Babel 7.24.0
- ステージ3のプロポーザルであるJSON modulesのサポート
Babel 7.23.0
- ステージ3のプロポーザルであるデコレータメタデータのサポート
- ステージ3のプロポーザルであるソースフェーズインポートのサポート
- ステージ2のプロポーザルである遅延インポート評価のサポート
- オプショナルチェーン代入プロポーザルのサポート
- インポートにおける
.ts
拡張子の書き換えのサポート
Babel 7.22.0
- ステージ4のRegExp
v
フラグプロポーザルをデフォルトで有効化 - ステージ3のプロポーザルである明示的なリソース管理プロポーザルのサポート。 asyncバージョンを含む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会議で合意に達したデコレータプロポーザルの更新のサポート
- ステージ3のプロポーザルであるインラインRegExp修飾子のサポート
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
- ステージ3バージョンのデコレータプロポーザルのサポート
- ステージ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のプロポーザルであるRegExpセット表記法と文字列のプロパティのサポート
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
- ステージ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スタイル」のパイプライン演算子ステージ2プロポーザルのサポート
JavaScript
const result = "World" |> `Hello, ${%}!` |> alert(%);
- TypeScript 4.4サポート
- ステージ4のプロポーザルであるトップレベル`await`のパースをデフォルトで有効化
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`式プロポーザルのサポート
JavaScript
let valP = async do {
2 + await computeIt();
}; - BabelをNode.jsの動作に合わせるための、`@babel/plugin-transform-modules-commonjs`の`importInterop: "node"`オプションのサポート
- 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のプロポーザルである論理代入と数値区切り文字をデフォルトで有効化
- 10進数プロポーザルのパースサポート
JavaScript
console.assert(0.1m + 0.2m === 0.3m);
- TypeScript 4.0サポート
@babel/eslint-parser
Babel 7.10.0
- ステージ4のプロポーザルである`import.meta`のパースサポートをデフォルトで有効化
- 人間工学に基づいたプライベートフィールドのブランドチェック提案のサポート
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
- ステージ4の提案であるオプショナルチェイニングとNull合体演算子をデフォルトで有効にします。
.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
ポリフィルの注入のサポート- 部分適用提案のサポート
JavaScript
strings.map(parseInt(?));
- 静的クラス機能提案の一部である、静的プライベートメソッドのサポート
JavaScript
class Dog {
static #register() { /* ... */ }
} - TypeScript 3.4 のサポート
Babel 7.3.0
- プライベートメソッド提案の一部である、インスタンスプライベートアクセサーのサポート
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 のサポート
- プライベートメソッド提案の一部である、インスタンスプライベートアクセサーのサポート
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」 (
/*#__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
) - Null合体演算子 (
a ?? b
) - パイプライン演算子 (
a |> b
) - スロー式 (
() => throw new Error("a")
)