Turborepo 2.0

2024年6月4日,星期二
Chris Olszewski
姓名
Chris Olszewski
Nicholas Yang
姓名
Nicholas Yang
X
@nicholaslyang

Turborepo 2.0 改进了 JavaScript 和 TypeScript 仓库的开发者体验,其功能包括

立即运行 npx @turbo/codemod migrate 进行更新,或使用 npx create-turbo@latest 开始使用。

访问升级指南获取更新说明。 重大变更列在下方。

全新终端 UI

Turborepo 1.13 中,我们发布了一个实验性界面,以了解改进后的终端 UI 如何提升开发速度。通过RFC 流程,我们得以与社区合作设计一个改进的本地体验,这得益于您的反馈。感谢所有参与者。

今天,我们将发布稳定的新 UI,以及它所支持的备受期待的功能。

改进了日志的清晰度

在 2.0 之前,当您处理库和应用程序时,turbo 会以流的形式输出日志。有时这可能会让人感到信息过载,因为混合的日志使得难以理解特定任务的进展情况。

在此 UI 版本中,您可以使用箭头键选择单个任务,一次检查一个任务的日志,从而更容易阅读您想要关注的日志。

须知: 

早期版本的 turbo 中的流式日志视图仍然可以通过使用 --log-order 标志在本地开发中使用。请注意,使用此选项时,任务将不具有交互性,并且某些工具可能会意外清除终端。

交互式任务

许多工具允许与脚本进行交互以实现重要的功能。但是,在以前版本的 Turborepo 中,您的脚本被困在 turbo 内部,因此您无法与它们交互。

现在,您可以进入单个任务的 shell,并通过直接在界面中输入内容,将输入传递到脚本的 stdin。这支持诸如使用 JestVitest 运行特定测试套件、使用 DrizzlePrisma 处理数据库迁移等工作流程。

要将任务标记为交互式,请在其定义中添加 "persistent": true

./turbo.json
{
  "tasks": {
    "dev": {
      "cache": false,
      "persistent": true
    }
  }
}

在 UI 中选择任务后,使用 Enter 键进入任务的 shell,使用 CTRL+Z 退出。

要了解有关持久性和交互式任务的更多信息,请访问文档

监听模式

Turborepo 一次运行多个任务的能力为您提供了更紧密的反馈循环,帮助您更快地交付产品。为了在本地工作时充分利用 Turborepo 的并行化,您的工具需要具有可用的“监听器”功能,以便在您进行更改时重新运行代码。不幸的是,许多常用工具不具备此功能,并且大多数工具不具备 Monorepo 感知能力,这导致了仓库中依赖于其他脚本的脚本出现问题。

今天,我们发布监听模式,将此功能带给您的所有工具

终端
turbo watch dev lint test

使用 turbo watch,Turborepo 将在您更改源代码时重新运行任务。任务将使用您的依赖关系图和 turbo.json 中的配置运行,就像 turbo run 一样。

在文档中了解有关监听模式的更多信息。

全新文档

在此版本中,我们还发布了经过改进的文档,这些文档建立在早期版本的优势之上。我们听取了您的反馈,因此文档现在包括

访问 Turborepo 文档。

重大变更

访问升级指南,了解如何更新到 2.0。

配置

可以使用 npx @turbo/codemod migrate 更新 turbo.json 的重大变更。

正确性

其他

社区

我们很高兴看到 Turborepo 的持续增长和采用

Turborepo 是所有贡献者的共同努力成果,包括我们的核心团队:AnthonyChrisGregMehulMitchNicholasTom

感谢您持续的支持、反馈和协作,使 Turborepo 成为您首选的构建工具。如果您尚未加入,请在 GitHubDiscord 上参与讨论。