V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
YadongZhang
V2EX  ›  程序员

The future is turbopack

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

    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   ·   我们的愿景   ·   实用小工具   ·   3426 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 32ms · UTC 10:35 · PVG 18:35 · LAX 03:35 · JFK 06:35
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.