
知名框架Next.js开发公司Vercel,对外开源一个称为Turbopack的高速网页打包工具,适用于各种框架,现在开发者可以率先在Next.js 13试用Turbopack的Alpha测试版。Turbopack项目由知名网页打包工具Webpack的创造者Tobias Koppers带领开发,目的是要取代Webpack。
Turbopack是以程序语言Rust开发,Vercel提到,每次他们将原本基于JavaScript的工具移植到Rust的时候,就会看到巨大的性能改进。Next.js换掉JavaScript转译器Babel,使转译速度提高达17倍,Vercel接着又换掉了Next.js的JavaScript解析器Terser,加快了极简化(Minification)的速度达6倍,同时还减少加载时间和带宽使用。
但官方提到,Next.js 13捆绑应用程序的速度还受到Webpack的影响。目前Webpack已经被下载超过30亿次,是开发者构建网页不可或缺的一部分,但是该工具的执行速度限制了Next.js 13,为此,Vercel以Rust开发了Turbopack,希望能够取代Webpack,改进网页应用程序打包速度。
Turbopack构建在新的增量架构之上,能以非常快的速度打包应用程序,特别是针对大型应用程序,更新速度是前端工具Vite的10倍,而且比Webpack还要快700倍,官方提到,越大的应用程序速度差异越大,甚至可以比Vite快20倍。
Turbopack只会捆绑最少所需的开发资源,因此启动速度非常快,在具有3,000个模块的应用程序,Turbopack只需要1.8秒就能完成启动,而Vite需要11.4秒。官方披露Turbopack快速的原因,Vercel参考Turborepo和Google Bazel的开发经验,通过缓存来避免重复执行相同工作。
Turbopack创建在开源Rust增量记忆框架Turbo之上,Turbo能够缓存程序中任何函数的结果,当程序再度执行时,除非函数的输入变更,否则函数不会重新执行。这个基础架构使得开发者的程序,能够从函数层级跳过大量的工作,再加上Rust高性能的运行速度,Turbopack因此能够高效运行。
Vercel将Turbopack用于Next.js 13开发服务器上,将会使热模块取代(Hot Module Replacement,HMR)更快速,且Turbopack原生支持React服务器组件,以及TypeScript、JSX和CSS等。另外,Turbopack也将会被应用于本地和云计算Next.js产品构建。