10月26日,Vercel 推出并开源了下一代打包工具:Turbopack。由 Webpack 的创建者 Tobias Koppers 和 Next.js 团队使用 Rust 编写出来的。
尝试一下
在 Next 中尝试 Turbopack 的 Alpha 版本:next dev –turbo。
Turbopack 对服务器组件、TypeScript、JSX、CSS 等提供了开箱即用的支持。不过在 Alpha 版期间,许多功能尚不受支持。
Next.js 中的 Turbopack 目前仅支持 next dev,可查看支持的功能。开发团队还在努力通过 Turbopack 添加 next build 支持。未来我们将发布独立的 CLI、插件 API,并支持其他框架,如 Svelte 和 Vue。
Turbopack有多快
Turbopack 建立在新的增量体系结构上,以获得最快的开发体验。在大型应用中,它展示出了 10 倍于 Vite 的速度,700 倍于 Webpack 的速度。在更大的应用中,差异更加巨大 —— 通常比 Vite 快 20 倍。
Turbopack 在开发环境只打包需要的最小资产,所以启动飞快。在一个 3000 个模块的应用里,Turbopack 只花了 1.8 秒启动,Vite 花了 11.4 秒。
为什么 Turbopack 这么快
Turbopack 的架构吸取了 Turborepo 和 Google 的 Bazel 等工具的经验教训,两个工具都专注于使用缓存,永远不会重复相同的工作。
Turbopack 是建立在 Turbo 之上的,Turbo 是基于 Rust 的开源、增量记忆化框架。Turbo 可以缓存程序中任何函数的结果。当程序再次运行时,函数将不会重新运行,除非它的参数改变了。这种粒度的架构使您的程序能够在函数级别跳过大量工作。
增量响应式系统,又有 Rust 的速度加持?Turbopack 是不可阻挡的!
Turbo 的未来
首先,Turbopack 将用于 Next.js 的开发服务器。它将为闪电般快速的 HMR 提供动力,并天然支持 React Server Component,Typescript,JSX,CSS 等也一样。
Turbopack 最终也会赋能 Next.js 的生产环境构建,无论是本地还是云端。我们会在你的整个团队里共享 Turbo 的缓存,用Vercel Remote Caching[4]。
Webpack 用户还可以期望未来可以增量迁移到 Rust-based 的 Turbopack 特性。
我们对 Turbo 生态系统的未来感到更加兴奋,我们推动它来帮助你更快速的迭代,在灵感到来时更好的创造。
延伸阅读
https://turbo.build/pack/docs/core-concepts
https://juejin.cn/post/7158997985870200839