Babel 8.0.0
Babel 8.0.0 がリリースされた。Babel 7 から 8 年ぶりのメジャー版で、新しい変換機能の追加はなく、パッケージ配布形式・Node.js 要件・@babel/preset-env の既定出力を現行の JavaScript エコシステムに合わせて更新する内容が中心である。全 Babel パッケージに TypeScript 型が同梱され、@types/babel__* なしでプログラム API を TypeScript から利用できる。
主な破壊的変更
- ESM 専用: Babel 8 はネイティブ ECMAScript modules として配布され、実行には Node.js
^22.18.0または>=24.11.0が必要。Babel 自体は古い Node 向けコードも出力できるが、ツールチェーン側の Node は LTS への更新が推奨される。 @babel/preset-envの既定変更: ES5 へのコンパイルをやめ、Browserslist のdefaultsクエリ(現時点ではおおよそ ES2023 相当)を基準にする。出力形式の既定も CommonJS から ESM に切り替わる。ES5 が必要な場合はtargetsを明示する。loose/specの整理:@babel/preset-envからは削除され、個別プラグインでは非推奨。Babel 7.13.0 以降で利用可能なassumptionsへの移行が推奨される。- ポリフィル注入の分離:
@babel/plugin-transform-runtimeと@babel/preset-envのcorejs/useBuiltInsは廃止され、babel-plugin-polyfill-corejs3に集約される。
移行前は Babel 7 の設定を Babel 8 の新既定に寄せてから上げる手順が推奨される。.browserslistrc を使わない場合は、トップレベルの targets を明示する。
json
{
"targets": "defaults"
}corejs / useBuiltIns を使っている場合は、次のように babel-plugin-polyfill-corejs3 へ置き換える。
json
{
"plugins": [
"@babel/transform-runtime",
["babel-plugin-polyfill-corejs3", { "method": "usage-pure", "version": "3.42.0" }]
]
}Babel 8 の安定版リリースに伴い、Babel 7 への機能・修正のバックポートは停止する。セキュリティサポートは 2027 年 6 月まで継続される。