Turborepo 2.1
Turborepo 2.1 改进了与您的仓库的集成,新增功能包括:
- 受影响的包图检测:仅使用
--affected运行有变更的任务。 - 仓库探索工具:使用
turbo ls和turbo run更快地查找包和任务。 - 终端UI改进:日志选择、任务搜索、大小调整等。
- 扩展配置选项:使用
turbo.json为默认值提供更多灵活性。
立即运行 npx @turbo/codemod migrate 进行更新,或使用 npx create-turbo@latest 开始使用。
使用 --affected 运行已更改包的任务
Turborepo 的远程缓存在所有机器上共享一个缓存,因此您不必重复进行相同的工作。但是,如果您可以完全忽略未更改的包呢?
您现在可以使用 --affected 标志与 turbo run 结合使用,自动针对当前分支最新提交与仓库默认分支(通常是 main 或 master)之间有变化的包。turbo 将使用您的包图,确保为直接有更改或内部依赖项有更改的包运行任务。
您会在以下情况下使用此标志:
- 您在单体仓库中跨包运行许多任务,但只希望在代码有更改的包中运行这些任务。
- 您没有使用远程缓存,但仍希望在 CI 中尽可能少地工作。
- 您正在使用远程缓存,并且在一个大型仓库中。通过最小化将从缓存中恢复的任务量,可以减少网络传输的数据量,从而加快缓存恢复速度。
- 您已经在使用高级过滤技术或
turbo-ignore来创建与--affected相同或类似的行为。您很可能有机会使用此新标志来简化脚本。
要了解更多信息,请访问文档。
仓库探索工具
随着仓库的增长和变化,快速找到所需内容可能很困难。我们希望快速显示您的任务、包及其关系,以更快、更轻松地理解您的仓库。
turbo run
使用 turbo run(不带任务参数)获取仓库中可用任务的列表。此命令也适用于过滤器和自动包作用域。
访问文档以了解更多信息。
turbo ls
使用 turbo ls 获取仓库中所有包及其位置的列表,或过滤到特定包以查看其内部依赖项和任务的摘要。turbo ls 还支持 --filter 和 --affected,这使得收集已更改包的列表变得容易。
turbo ls 支持一个实验性的 --output 标志,可用于以特定格式返回结果。例如,--output=json 可以更轻松地为其他工具或自定义脚本创建输入。如果您之前仅使用 turbo build --dry=json 来检索已更改包的列表,请尝试使用 turbo ls --affected --output=json。访问文档以获取更多信息,并就 turbo ls RFC 中的输出格式留下反馈。
访问文档以了解更多信息。
终端UI改进
在 Turborepo 2.0 中,我们发布了新的终端 UI,以提高日志的清晰度并允许在本地开发中进行交互式任务。我们听取了您的反馈,并优先改进此 UI,在 2.0 的补丁和此次 2.1 版本中发布了改进:
- 高亮日志以复制到剪贴板 (PR)
- 搜索任务列表 (PR)
- 终端大小更改时更清晰的布局调整 (PR)
- 任务列表中缓存命中项的新图标 (PR)
- 观察模式触发重启时任务状态指示器更新 (PR)
- 终端 UI 退出后仍尊重输出日志 (PR)
构建出色的终端 UI 体验面临独特的挑战,我们将继续迭代此体验。感谢您在创建出色的单体仓库 UI 方面持续提供反馈。
扩展配置选项
在此版本中,我们向 turbo.json 添加了更多键,以便为您的仓库默认值提供更大的灵活性。以下键在此版本中新增:


您可能一直将这些配置的等效标志用于许多或所有 turbo 调用,导致您的代码库中充斥着如下命令:
现在可以通过 turbo.json 中的集中配置,使用 Turborepo 现有的配置模型进行简化:
turbo.json设置仓库的默认值。- 系统环境变量在特定环境中自定义行为。
- 标志自定义特定
turbo调用的行为。
要了解有关可用选项和配置的更多信息,请访问文档。
其他改进
- 我们要特别感谢 Shaharking 在 #9023 中的贡献,使得流式 UI 中任务名称的颜色具有确定性,解决了 #2564。这使得比较不同
turbo run调用中的任务变得更加容易。
请在 vercel/turborepo 查看完整的更新日志。
社区
自发布 Turborepo 2.0 以来,我们看到了惊人的采用率和社区增长:
- 25.9K+ GitHub 星标
- 2.9M+ 每周 NPM 下载量
- 通过 Vercel 上的远程缓存节省了 428 年的计算时间
Turborepo 是所有贡献者(包括我们的核心团队)共同努力的成果。
感谢您持续的支持、反馈和协作,使 Turborepo 成为您的首选构建工具。