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


以前,如果 Task B
依赖于持久性 Task A
,则 Task B
永远不会执行,因为 Task A
永远不会退出。通过将 Task A
声明为 persistent
,Turborepo 将防止发生此错误情况。
在此版本之前,我们一直建议对持久性任务使用 turbo run <task> --parallel
。使用 --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
代码修改来获得相同的行为
另请注意,您将不再需要指定 outputs: []
,因为不缓存任何内容现在是默认行为。代码修改还将从您的任务中删除此配置。
“仅错误”输出模式,用于更安静的日志
为了提高错误的可见性,社区成员 @dobesv 贡献了 一个仅显示错误而不是任务运行中的所有日志的解决方案。在调试管道时,可以使用 --output-logs=errors-only
来保持您的信噪比,以便您可以专注于确保管道成功运行。这可以作为 配置选项 或作为 CLI 标志 使用
社区
自从发布 Turborepo v1.6 并与 Turbopack 合并以来,我们看到了令人难以置信的采用率和社区增长
- 超过 18.7k+ GitHub 星星
- 每周超过 75 万次 NPM 下载
- 通过 Vercel 上的远程缓存 节省了 30 年的计算时间
Turborepo 是我们所有贡献者(包括我们的核心团队)共同努力的成果。
感谢您持续的支持、反馈和协作,使 Turborepo 成为您的首选构建工具。