经过两年时间,Next.js Turbopack 已准备好供前端商店使用。它比 Webpack 更快,并具有新的缓存功能。
周四,在旧金山举行的 Next.js 大会上,Next.js 团队发布了 Turbopack 的稳定版本,这是一款更快的基于 Rust 的框架编译器。Turbopack 已经走过了两年的历程,它于 2022 年 Next.js 大会上首次以 alpha 版本推出。该团队还介绍了一种新的部分预渲染方法。
Turbopack 取代了 Webpack,专为增量构建而设计,适用于开发和生产。Next.js 的创建者兼 Web 应用程序平台 Vercel的创始人Guillermo Rauch表示,改进后的编译器可以支持更大的应用程序,因此 Web 应用程序团队不再需要拆分应用程序进行编译。
"你不再需要因为编译器而随意拆分应用程序,"他说。"我们在这里所做的几乎就像快速刷新对开发所做的那样,从之前的进度恢复,使开发体验完全即时。"
Rauch 介绍了 Turbopack 并现场演示了它。
他说道:"经过数月的艰苦工作,我终于打好了基础,我很高兴地宣布,Turbopack 的开发工作现在已经稳定下来,可以广泛使用。"
他说,最近几个月,团队专注于三件事:
-
与之前的编译器相同。"我们通过了之前编译器的所有测试 --- 6,599。我们甚至可以再添加一个测试来完善它,但我们决定不这样做。"
-
扩展生态系统兼容性,更好地支持 Webpack 加载器、React 编译器、包括 Tailwind 在内的 CSS 解决方案、样式组件和 SaaS。
-
优化冷编译。"与之前的编译器相比,我们进一步提高了平均内存利用率 30%,大页面的初始编译速度提高了 40%,Turbopack 的初始编译速度现在提高了 50%,快速刷新的代码更新速度提高了 90%",Rauch 表示。
"但我们可以做得更好,"他说。"我们可以在这件事上采取创始人模式。我们可以更加努力。让我们看看 Turbopack 即将推出什么,因为我们还没有完成。"
然后他透露,团队已经改进了缓存,这样如果编译器停止运行,就不必从头开始完全重建。他展示了以前的编译器与 Turbopack 在服务器停止时的构建时间的比较。
"让我们来看看我们即将推出的实验性缓存改进,"他说。"当我们针对我们的大型代码库运行 Turbopack Plus 缓存时,它在 900 毫秒内完成编译,然后在 293 毫秒内完成编译"
他解释说,它之所以速度快是因为 Turbopack 从持久缓存中恢复,而不是重新编译每个模块。
"我们一开始使用冷编译器,耗时 22 秒,然后回溯,将耗时缩短至 290 毫秒,"他说。"这对开发者体验的影响非常显著。"
通过快速刷新,开发人员可以对应用程序进行细微的编辑,并且以毫秒为单位进行测量。
"对我来说,迭代速度不仅仅关乎本地开发。它还关乎与团队、与客户、与世界共同建设和分享,"他说。
他还提供了构建更新。他说,TurboPack 通过了之前编译器基准的 96% 的测试。
"对我来说,迭代速度不仅仅关乎本地开发。它还关乎与团队、客户和世界一起构建和分享。"
------ Next.js 的创建者和 Vercel 的创始人 Guillermo Rauch
"这是我们与全球众多客户和数千个生产应用程序一起运行了很长时间后积累的 60,822 个测试,"他说。"我们对此感到如此兴奋的原因是------也是我们取得快速进展的原因------我们在本地开发和生产版本之间共享基础设施。"
他继续说道,这使得 Turbopack 能够共享优化。例如,当团队为生产构建启用增量缓存时,其一些大型应用程序的构建速度提高了五倍。
"对我来说,这就是我们创建 Turbopack 的原因,"他说。"我们设想的编译器不会一遍又一遍地重复同样的工作。"
编译器所花费的时间与更改的大小成正比,而不是与代码库的大小成正比。 Rauch 表示,这意味着前端开发部门可以"非常、非常、非常雄心勃勃地"考虑单个 Next.js 应用程序的大小,以及能够开发该单个应用程序的开发团队的规模。
编者注:Vercel 为作者参加 Next.js Conf 支付了旅行和住宿费用。
更正:10 月 28 日上午 9:23 更新,澄清 Turbopack 目前初始编译速度提高了 50%,并且已通过 6,599 项测试。