跳至主内容

7.29.0 发布:Babel 7 的最后一个次要版本

· 1 分钟阅读
非官方测试版翻译

本页面由 PageTurner AI 翻译(测试版)。未经项目官方认可。 发现错误? 报告问题 →

Babel 7.29.0 发布了!

这是 Babel 7 的最后一个次要版本,因为我们即将发布 Babel 8.0.0。Babel 8.0.0-rc 版本也于今日发布:快去试试吧!

此版本支持在 @babel/standalone 中通过 <script> 元素的 data-target 属性定义转译目标。同时,它还向 @babel/standalone 添加了对 @babel/core 异步 API 的支持。

这两项变更旨在简化从 Babel 7 到 Babel 8 的迁移。

您可以在 GitHub 上查看完整更新日志。如果您已经在使用 Babel 8 beta,那么所有 7.28.0 的新特性都已包含在 v8.0.0-rc.1 中。

如果您或您的公司希望支持 Babel 和 JavaScript 的发展但不知如何行动,可以通过我们的 Open Collective 进行捐赠,更可直接参与 新 ECMAScript 提案 的实现!作为志愿者驱动的项目,我们依赖社区支持来为广泛的 JavaScript 用户提供持续服务。欢迎通过 team@babeljs.io 联系我们详谈!

重点更新

@babel/standalonedata-targets 属性的支持 (#17482)

默认情况下,@babel/preset-env 会将代码转译为 ES5。这一行为在 Babel 8 中将发生变化,届时它将默认使用 Browserslist 的 defaults 查询

我们建议从 Babel 7 开始就显式指定 targets,这样在主要版本升级时输出就不会改变。这一新属性使得在使用 @babel/standalone 自动转换 <script> 标签时也能实现此操作:

<script src="https://unpkg.com/@babel/standalone/babel.min.js"></script>

<script type="text/babel" data-targets="firefox 97, chrome 102">
const getMessage = () => "Hello World";
document.getElementById("output").innerHTML = getMessage();
</script>

请注意,Browserslist 不支持将 "current browser" 指定为目标:您需要自行选择足够旧的目标,以确保支持用户所使用的浏览器。

Babel 8.0.0-rc.1

经过 数年 的打磨,Babel 8 终于准备就绪。我们将其发布为 8.0.0-rc.1 版本,以便更多用户能在正式发布前试用并反馈问题。除非收到试用最新预发布版本用户的反馈,否则我们不会引入更多变更。

我们引入破坏性变更的核心原则是:升级到 Babel 8 应该简单易行。大多数变更已在 Babel 7 中通过可选配置提前引入,方便您在实际升级前就开始适配代码。

我们准备了以下优质资源,助您完成从 Babel 7 到 Babel 8 的升级:

许多破坏性变更可能不会影响用户,却令我们兴奋不已:例如 Babel 8 将仅作为 ESM 包发布。为实现这一目标我们探索已久,最终随着 Node.js 20 中支持 require(esm),我们决定不再提供 CommonJS 替代方案。

您也可以在 GitHub 上查看每个 Babel 8 预发布版本的完整更新日志。