首页   注册   登录
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
宝塔
V2EX  ›  前端开发

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

  •  
  •   autoxbc · 28 天前 · 681 次点击
    Babel 编译有点慢,查了下有人用 Rust 重写了,也就是 swc,性能好 16 倍
    配置完速度是飞快,原来 6s 现在一闪完成

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

    可是 es5 里哪有 generator,这样等于不能用,白瞎了挺快的速度,怎么办?
    4 回复  |  直到 2019-10-22 05:01:04 +08:00
        1
    Austaras   27 天前
    swc 非常不成熟,不要用

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

    那么,怎么能让 swc 编译 generator 到 regeneratorRuntime 的函数调用呢?
        3
    autoxbc   27 天前
    @autoxbc #2 看起来 regenerator-transform 可以转码,不过 regenerator 和 Babel 一样慢,也就没有意义了

    另:swc 确实不成熟,形如

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

    居然转成

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

    好明显的 bug,放弃了
        4
    Austaras   26 天前
    去提 issue 吧
    关于   ·   FAQ   ·   API   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   1609 人在线   最高记录 5043   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.3 · 21ms · UTC 16:28 · PVG 00:28 · LAX 08:28 · JFK 11:28
    ♥ Do have faith in what you're doing.