返回博客

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上参与讨论。