Skip to main content

2to3

· 4 min read

过去几周,我们看到 6to5 项目有很多动态;每天在世界各个角落都有成千上万的人在下载。在过去一个月中,已经关闭 200 多个 issue。从 2.0 发布以来,已经有 867 次 commit(提交)、60 个 minor(次要版本) 和 patch(补丁版本) 发布。它的下载量是 npm 下载量最多的 packages 中的前 1%,仅在上个月就有近 100k 的下载量。

今天我们将发布 3.0。

注意: 6to5 不保留主要版本(major)的错误修复(bug fixes)或新的向后兼容功能(new backwards compatible features)。下面列出的一些功能来自之后的一些 2.x 版本。

Loose Mode(松散模式)

6to5 非常重视它所做一切的规范兼容性。有时,规范周围有许多复杂的边缘用例,但并不影响大多数代码。

所以我们添加了 Loose Mode(松散模式) 来忽略其中一些边缘用例,以便创建更清晰、更简短、更快速的执行输出。

例如,在构造函数中调用 super() 通常会被编译为:

JavaScript
function Foo() {
_get(Object.getPrototypeOf(Foo.prototype), "constructor", this).call(this);
}

而在 Loose Mode 下,会编译为:

JavaScript
function Foo() {
Bar.call(this);
}

Before you use Loose Mode, you should be aware that it doesn't line up with the spec completely, it may lead to incompatible code if you aren't aware of these inconsistencies. Check out the docs for more info.

性能改善

在过去的几周里,@gaearon 做了一些惊人的工作,将 6to5 编译时间缩短了 200% 以上。这些改进对我们来说极其重要,我们很高兴看到社区成员做出如此巨大的贡献。

演示平台:锤形运算符(mallet operator)

如同在 Ruby 和 CoffeeScript 中看到过的锤形运算符,允许你根据其值是 falsy 或 非falsy 来有条件地分配值。

JavaScript
a ||= b

行为如下

JavaScript
if (!a) a = b;

这个功能来自 @jridgewell。我们鼓励提案作者挺身而出,以便将他们的想法体现在所有最新的语言和 API 功能中。

自包含性(selfContained)

We’ve also introduced a new optional transformer that negates the need for a polyfill and bypasses all 6to5 caveats. It will automatically alias ES6 static methods and built-ins as well as include regenerator whenever you use async functions or generators. This is great for libraries that don't want to pollute the global scope.

This replaces the coreAliasing transform and the includeRegenerator option. Check out the docs for more info.

划分命名空间后的 transformer(namespaced transformers)

在 3.0 中,我们重新命名了所有 transformer,不仅是保持一致性,而是为了将它们划分为 namespace(命名空间)。

例如,我们已将所有 es7 transformer 重新命名为 es7.comprehensionses7.objectSpread,因此如果你想将所有 es7 transformer 列入黑名单,可以直接:

Shell
$ 6to5 --blacklist es7

关于重新命名后的 transformers 的完整列表,请查看 Changelog


由于有着许多全新功能和错误修复,使 v3 成为一个出色的版本。请务必在 Changelog 中查看所有内容。

我们要感谢所有参与 6to5 社区的人,特别是那些为 3.0 发布做出贡献的人。

未来看起来充满光明。

— 6to5 团队