Turborepo 1.7
Turborepo 1.7 专注于通过让您的任务更清晰来改善开发者体验
- 改进了对长时间运行任务的支持:使用
persistent: true标记非终止任务,以便turbo在这些任务有依赖项时提醒您。 - 输出更清晰:您现在总是需要声明任务输出,从而提高任务将缓存内容的透明度。
- 可全局安装:安装一次,随处使用。Turborepo 现在可以全局安装,并从任何目录运行,而不仅仅是从您的仓库根目录运行。
- “仅显示错误”输出模式:减少输出日志,仅在任务失败时显示。
立即运行 npm install turbo@latest 进行更新,或者全局安装 NEW 并运行 set-default-outputs codemod。
自信地安排您的长时间运行任务
为避免可能导致任务永不运行的错误配置,您现在可以使用 persistent: true 配置选项告诉 Turborepo 哪些任务不会自行退出(如 dev 脚本)。当此配置在任务上设置时,Turborepo 将确保没有其他任务可以依赖此任务。这对于带有 --watch 标志的 dev 任务或测试运行器非常有用。


以前,如果 任务 B 依赖于一个持久的 任务 A,任务 B 将永远不会执行,因为 任务 A 从未退出。通过将 任务 A 声明为 persistent,Turborepo 将防止这种错误情况发生。
在此版本之前,我们一直推荐将 turbo run 用于持久任务。使用 --parallel,turbo 将忽略您的依赖图并一次执行所有任务。
尽管 --parallel 提供了一个有用的逃生舱口,但这意味着用户必须告诉 Turborepo 如何 运行他们的任务,而不是声明一个任务 是什么。
与其抛弃整个拓扑依赖图,不如让 Turborepo 保留您的依赖图,同时使用 persistent: true 保证您不依赖于不会退出的进程,这要精确得多。
全局 turbo
一旦您全局安装了 turbo,您现在就可以从项目的任何位置运行您的 Turborepo 任务。为此,请使用
turbo 现在可以在任何项目中工作。为了找到您的本地 turbo 版本,turbo 将执行几个步骤,始终从您当前的目录向上查找
- 查找最近的 turbo.json。
- 如果未找到,则查找第一个带有
workspaces属性的package.json。 - 如果未找到,则查找第一个
package.json。
您的全局安装的 turbo 版本仅在本地安装的 turbo 版本不存在或无法找到时才会被使用。

turbo --version 和 turbo bin 将分别显示将执行您的任务的 turbo 副本的版本和二进制文件位置。此外,使用 -vv 或 --verbosity=2 运行将始终显示是否正在使用本地或全局 turbo。
声明您的 outputs 以提高清晰度
以前,如果您没有为任务指定 outputs 键,Turborepo 会自动尝试缓存 dist/ 和 build/ 目录中的所有文件。
这对于特定框架的 build 任务运行良好,但这种隐式行为由于适用于所有任务而无法很好地扩展。我们发现,在许多使用 Turborepo 的开发人员、团队、项目和代码库中,自动缓存 dist/ 和 build/ 目录的假设正在给用户带来问题。
在 1.7 版本中,此行为已删除,您现在需要明确告诉 turborepo 缓存什么。


如果您在 1.7 以下的 Turborepo 版本中依赖默认缓存输出,可以通过运行 @turbo/codemod set-default-outputs codemod 来获得相同的行为
另请注意,您将不再需要指定 outputs: [],因为现在不缓存任何内容是默认行为。codemod 也会从您的任务中删除此配置。
“仅错误”输出模式以获得更安静的日志
为了突出错误,社区成员 @dobesv 贡献了 一个仅显示错误而不是任务运行所有日志的解决方案。在调试管道时,可以使用 --output-logs=errors-only 来保持高信噪比,以便您可以专注于确保管道成功运行。这可以用作配置选项或CLI 标志
社区
自发布 Turborepo v1.6 并与 Turbopack 合并以来,我们看到了令人难以置信的采用和社区增长
- 1.87 万+ GitHub 星标
- 每周 NPM 下载量达 75 万次
- 通过 Vercel 上的远程缓存节省了 30 年的计算时间
Turborepo 是包括我们核心团队在内的所有贡献者共同努力的结果。
感谢您持续的支持、反馈和协作,使 Turborepo 成为您的首选构建工具。