Babel 8.0.0

445文字
2分
編集

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-envcorejs / 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 月まで継続される。

#参考文献