有没有用 swc 替换 Babel 的朋友?

2019-10-21 00:06:58 +08:00
 autoxbc
Babel 编译有点慢,查了下有人用 Rust 重写了,也就是 swc,性能好 16 倍
配置完速度是飞快,原来 6s 现在一闪完成

问题来了,target 设为 es5,结果 async 不是转为 Promise 而是 generator
查了下官网,就是这样设计的
https://github.com/swc-project/swc

可是 es5 里哪有 generator,这样等于不能用,白瞎了挺快的速度,怎么办?
3296 次点击
所在节点    前端开发
4 条回复
Austaras
2019-10-21 05:18:19 +08:00
swc 非常不成熟,不要用

这个行为和 babel 是一致的,需要载入 generator polyfill,一般使用 https://www.npmjs.com/package/regenerator-runtime
autoxbc
2019-10-21 15:51:56 +08:00
@Austaras #1 感谢解答
我这里已经引入 babel-polyfill,也就间接包含了 regenerator-runtime。问题是,Babel 会把 generator 编译为 regeneratorRuntime 的函数调用;而 swc 遇到 generator 就把形如 function * () {} 的代码留在了转码文件中

那么,怎么能让 swc 编译 generator 到 regeneratorRuntime 的函数调用呢?
autoxbc
2019-10-21 17:42:42 +08:00
@autoxbc #2 看起来 regenerator-transform 可以转码,不过 regenerator 和 Babel 一样慢,也就没有意义了

另:swc 确实不成熟,形如

if(1){
const arg = 1 ;
}
const arg = 2 ;

居然转成

if (1) {
var arg = 1;
}
var arg = 2;

好明显的 bug,放弃了
Austaras
2019-10-22 05:01:04 +08:00
去提 issue 吧

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/611207

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX