The future is turbopack - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
请不要在回答技术问题时复制粘贴 AI 生成的内容
YadongZhang
V2EX    程序员

The future is turbopack

  •  
  •   YadongZhang 2022-10-26 08:16:12 +08:00 6689 次点击
    这是一个创建于 1084 天前的主题,其中的信息可能已经有所发展或是发生改变。

    https://vercel.com/blog/turbopack

    10x Vite, 700x Webpack

    盲猜 turbopack 的快和 Rust 这种类似 C/C++ 的底层语言多少有点关系,我没有依据,只是猜的

    并且 Vite 只是依赖 esbuild 在 rebuild 的时候速度才有提升的:

    https://storybook.js.org/blog/storybook-performance-from-webpack-to-vite/

    turbopack 第一次构建的时候就可以有速度优化:Turbopack only bundles the minimum assets required in development

    第 1 条附言    2022-10-26 09:01:24 +08:00
    更详细的介绍:

    https://turbo.build/pack/docs/core-concepts
    38 条回复    2022-10-27 01:37:24 +08:00
    LengthMin
        1
    LengthMin  
       2022-10-26 08:25:56 +08:00 via iPhone   1
    The secret to Turbopack's performance is twofold: highly optimized machine code and a low-level incremental computation engine that enables caching down to the level of individual functions. Once Turbopack performs a task it never does it again.

    还做了一些缓存机制
    theusername
        2
    theusername  
       2022-10-26 09:03:29 +08:00 via Android
    看起来号称很快的原因在于按需打包和粒度很细的缓存,好炫酷
    YadongZhang
        3
    YadongZhang  
    OP
       2022-10-26 09:07:45 +08:00 via Android
    @LengthMin
    @theusername

    Vite 也是这个思路,只不过 Turbopack 在第一次构建的时候就做了速度提升,tql
    mywaiting
        4
    mywaiting  
       2022-10-26 09:11:25 +08:00
    我倒是期待 JS 有一天能类似 TS 那样直接转码 /编译到 Rust ~

    这样就无所谓啥速度了~

    wasm 感觉已经很接近这个愿望了~
    David1119
        5
    David1119  
       2022-10-26 09:27:56 +08:00
    @mywaiting #4 wasmtime 来了。话说前端花活真多,所有基础设施都要用 rust 重写一遍么。。。。
    hronro
        6
    hronro  
       2022-10-26 09:34:26 +08:00 via iPhone
    @mywaiting #4 你要不要再看看你在说啥?
    Nugine0
        7
    Nugine0  
       2022-10-26 09:39:36 +08:00 via Android
    前端工具链领域的优化空间是真的大。用 Rust 写过一轮后,未来也不太可能有几百倍的速度提升了。换句话说,像这样悬殊的性能对比是空前绝后的。
    swift
        8
    swift  
       2022-10-26 09:42:41 +08:00 via iPhone
    vite 已经落后了吗
    churchill
        9
    churchill  
       2022-10-26 09:57:02 +08:00   1
    Turbopack does not perform type checks on your application. We use SWC to compile TypeScript code, which also does not perform type checks.

    又看到熟悉的句子了

    每次各种所谓新一代打包工具 都要把带实时 lint ,type check 的 webpack 暴打一顿

    正经事不干
    liuzhaowei55
        10
    liuzhaowei55  
       2022-10-26 10:02:17 +08:00 via Android
    node lts 从 v16 升到 v18 了,大家快冲
    thulof
        11
    thulof  
       2022-10-26 10:05:12 +08:00
    将近两年前用 swc 跑 jest 的时候,打包产物还有很多 Bug ,基本不可用,不知道现在怎么样了
    chloerei
        12
    chloerei  
       2022-10-26 10:07:35 +08:00
    文档连怎么单独安装都没有,不知道怎么试用。
    Leviathann
        13
    Leviathann  
       2022-10-26 10:08:46 +08:00
    @churchill 一个打包工具搞什么 lint typescheck 才是正经事不干瞎忙活
    lululau
        14
    lululau  
       2022-10-26 10:25:42 +08:00
    The future 不是 importmap 吗
    otakustay
        15
    otakustay  
       2022-10-26 10:30:18 +08:00
    @churchill #9 这玩意暴打没 lint 和 typecheck 的 webpack 也是轻轻松松
    YadongZhang
        16
    YadongZhang  
    OP
       2022-10-26 10:32:41 +08:00 via Android
    @chloerei

    最低要求 Nextjs 13 ,然后 `next dev` 后面加参数 `--turbo`,我猜的,你可以试一下
    chloerei
        17
    chloerei  
       2022-10-26 10:38:43 +08:00
    @YadongZhang 不用 next.js ,想知道怎么单独安装。npm 搜了 turbopack ,是个无关的包。现在的文档安装没说清楚,也没有配置说明,都是营销内容比竞品怎么怎么好,给我留下不好印象。
    YadongZhang
        18
    YadongZhang  
    OP
       2022-10-26 10:45:52 +08:00 via Android
    @chloerei

    目前只在 Nextjs v13 中可以用 turbopack

    https://vercel.com/blog/turbopack

    How fast is Turbopack? 前一句话
    serco
        19
    serco  
       2022-10-26 10:51:13 +08:00
    @chloerei turbopack 目前只能 nextjs 用,turborepo 才能给其他项目用
    mywaiting
        20
    mywaiting  
       2022-10-26 10:52:49 +08:00
    @hronro #6 我知道自己说啥啊,清楚这个 turbopack 是个打包工具,清楚 vite 和 webpack~

    就是,我只是顺便感慨了一下“速度”这个词而已~
    RabbitDR
        21
    RabbitDR  
       2022-10-26 15:34:47 +08:00   1
    是吗,用 54MB 的体积的提升换取 0.09s 到 0.01s 的提升是否值得也是值得讨论的( https://twitter.com/youyuxi/status/1585040261922820096 )。另外,他们家的产品总给人一种排外的味道。Vite 在发布之初就支持主流前端库,现在 turbopack 正式发布还只支持 React ,甚至可能只是 Next ,( https://turbo.build/pack/docs/roadmap#other-frameworks ),虽说兼容一下其它前端库不是什么难事,但其态度已经是可见一斑了。诚然 Vercel 工具链能带来前所未有的流程开发体验,但终究垄断不是什么好事,现在不过是时候未到而已。
    hronro
        22
    hronro  
       2022-10-26 15:44:42 +08:00
    @mywaiting #20
    速度不是全部由语言决定的,就算真的有工具能把 JS 代码「转码」成 Rust 代码,这种生成出来的 Rust 绝对跑得比原来的 JS 代码还慢,因为 Rust 没有 JIT 。
    12ava
        23
    12ava  
       2022-10-26 16:39:31 +08:00
    拿项目拉了个分支测试了下,目前的项目是基于 vite 构建多页面应用,用了 turbo 没感觉到构建又什么提升,构建时间基本一样。
    目前官网说的速度提升也只有冷启动和热更新的测试,这两功能暂时没试因为 vite 基本也是秒更新。
    FightPig
        24
    FightPig  
       2022-10-26 17:30:44 +08:00
    现在只能和 nextjs 一起用,这体验不了啥
    YuTengjing
        25
    YuTengjing  
       2022-10-26 18:43:58 +08:00   1
    @RabbitDR
    1. 官方文档说了后序会支持 vue, svetle 等,https://turbo.build/pack/docs/roadmap#other-frameworks
    2. 我觉得你对垄断有什么误解,开源的东西能叫垄断吗?
    3. vecel 这家公司都能黑,感觉你对它是不是了解的太少了。先不说 vecel 以它自身名义开源的高质量的项目就很多 next.js, swr, hyper.js, turborepro, satori 。再就是它的员工开源的项目 webpack, svelte,swc, rust-napi ,这么伟大的一家公司我不希望看到任何人黑它
    swift
        26
    swift  
       2022-10-26 18:54:43 +08:00 via iPhone
    @RabbitDR 54MB 换 10 倍,我觉得值,百米赛跑不就是最求最后 0.x 秒
    zhwithsweet
        27
    zhwithsweet  
       2022-10-26 19:41:04 +08:00   1
    无所谓,vite 以后等 turbopack 成熟之后集成进去就好了
    haolongsun
        28
    haolongsun  
       2022-10-26 20:00:13 +08:00
    前端真的是网红圈啊,东西看似变得很快,实际上啥也没变。
    vision1900
        29
    vision1900  
       2022-10-26 20:03:28 +08:00   1
    The future is bundle-LESS
    RabbitDR
        30
    RabbitDR  
       2022-10-26 20:06:01 +08:00
    @YuTengjing 不知道你怎么解读出我在黑 vercel ,**诚然 Vercel 工具链能带来前所未有的流畅开发体验**,我这不是在赞 vercel 吗。还有,你是不是搞错了什么,webpack, svelte, swc, rust-napi 都不是 vercel 生产出来的产品,vercel 只是聘用了这些产品的作者,可以承认的是 vercel 对开源社区的贡献,我个人也很喜欢的 vercel 的**产品**。但这和 vercel 给我带来那些“感觉”并不相冲突。关于垄断这一点,也有可能是我个人的误解。最后想提醒的是,不必过于神化 vercel ,首先不是只有 vercel 一家公司对开源社区有巨大贡献,另外就是资本这东西不是一个人或几个人能驾驭住的,往往一些公司就在资本不断涌入的某个时间节点,某些人的决策而导致一些唏嘘的结局。我希望看到的是有更多 vercel 这样的公司,而不是说不准有人批评这样的公司。
    hxsf
        31
    hxsf  
       2022-10-26 21:26:37 +08:00


    不支持 Type Checking 的 TypeScript ,等于自费武功啊
    swc 的同步编译挺快的,https://swc.rs/docs/benchmarks#transformations-synchronous

    所以建议只在开发环境使用 swc-loader 加速就行了。生产环境还是用 ts-loader 吧。
    hxsf
        32
    hxsf  
       2022-10-26 21:31:38 +08:00

    TypeScript 这样你敢用嘛,手动狗头
    用 ts-loader 虽然慢点,但是能救你一命
    me221
        33
    me221  
       2022-10-26 21:52:30 +08:00   1
    @YuTengjing

    这么伟大的一家公司我不希望看到任何人黑它
    ==================================

    你骨子里的奴性暴露出来了
    qz357
        34
    qz357  
       2022-10-26 21:57:11 +08:00
    同意
    YuTengjing
        35
    YuTengjing  
       2022-10-26 23:41:50 +08:00 via Android
    @RabbitDR 你要不再看一遍我说了什么,我也没说 webpack 是 vercel 开源的。用爱发电和 vercel 出钱发电不一样的,colorjs 的作者一场大火带走他的所有后可老惨了。webpack 核心贡献者 akait 和 rust_napi 作者加入 vercel 还天天积极更新这不算 vercel 的功劳? 另一个实际的例子,没尤雨溪给 volar 的作者打钱,voalr 年底前能 1.0?
    YuTengjing
        36
    YuTengjing  
       2022-10-26 23:47:27 +08:00 via Android
    @hxsf esbuid 一样的,你在这个帖子评论是不是觉得 vite 用的 vite 对 ts 有类型检查? c# 之父牵头的有几十号成员的 typescript 团队开发近 10 年才有了现在的 tsc ,你觉得是 esbuild 或者 swc 一两年就能 cover 住的吗?
    add1commit
        37
    add1commit  
       2022-10-27 00:33:53 +08:00 via iPhone
    好奇插件拓展会是什么样的机制,js or rust
    hxsf
        38
    hxsf  
       2022-10-27 01:37:24 +08:00
    @YuTengjing #36

    所以我后面说了
    > 所以建议只在开发环境使用 swc-loader 加速就行了。生产环境还是用 ts-loader 吧。
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     5560 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 34ms UTC 08:01 PVG 16:01 LAX 01:01 JFK 04:01
    Do have faith in what you're doing.
    ubao snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86