7.29.0 发布:Babel 7 的最后一个次要版本
本页面由 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/standalone 对 data-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 API 开发者迁移指南,适用于插件作者或直接使用 AST 的开发者;
-
Babel 8 文档网站(当前暂托管于 https://next.babeljs.io/ 直至 Babel 8 稳定发布)
许多破坏性变更可能不会影响用户,却令我们兴奋不已:例如 Babel 8 将仅作为 ESM 包发布。为实现这一目标我们探索已久,最终随着 Node.js 20 中支持 require(esm),我们决定不再提供 CommonJS 替代方案。
您也可以在 GitHub 上查看每个 Babel 8 预发布版本的完整更新日志。