V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
autoxbc

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

  •  
  •   autoxbc · Oct 21, 2019 · 3895 views
    This topic created in 2388 days ago, the information mentioned may be changed or developed.
    Babel 编译有点慢,查了下有人用 Rust 重写了,也就是 swc,性能好 16 倍
    配置完速度是飞快,原来 6s 现在一闪完成

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

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

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

    那么,怎么能让 swc 编译 generator 到 regeneratorRuntime 的函数调用呢?
    autoxbc
        3
    autoxbc  
    OP
       Oct 21, 2019
    @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
        4
    Austaras  
       Oct 22, 2019
    去提 issue 吧
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   2757 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 33ms · UTC 14:48 · PVG 22:48 · LAX 07:48 · JFK 10:48
    ♥ Do have faith in what you're doing.