Turborepo 1.2

2022年4月8日,星期五
Jared Palmer
姓名
Jared Palmer
X
@jaredpalmer
Becca Z.
姓名
Becca Z.
X
@becca__z
Gaspar Garcia
姓名
Gaspar Garcia
X
@gaspargarcia_
Greg Soltis
姓名
Greg Soltis
X
@gsoltis

自从一月下旬发布 Turborepo v1.1 以来,我们看到了惊人的采用率和社区增长

我们在 Turborepo v1.2 中进一步改进了人体工程学、可观察性和安全性,功能包括

立即运行 npm install turbo@latest 进行更新。首次运行 turbo run 后,您将看到关于如何使用 @turbo/codemod 运行 v1.2 的自动迁移的说明。

新的任务过滤 API

我们很高兴发布我们最受欢迎的功能之一:通过 --filter 标志表达性地过滤任务的能力。--filter 标志是当前 --scope--include-dependencies--since--no-deps 标志组合的更强大的替代品。

使用 --filter,您可以告诉 turbo 将命令执行限制为 monorepo 中匹配包的子集,基于名称、文件夹,甚至自 git commit ref 以来是否已更改。

看看您可以使用新的 --filter 命令完成的一些示例

您可以将多个过滤器一起使用,以获得更精细的过滤,并将上述模式 {}[]^... 的每个部分组合起来,以表达更复杂的行为。

例如,如果您有一个位于 ./apps/web 目录中的应用程序,其中本地包用作依赖项,并且 Turborepo 管道中 test 在拓扑上依赖于 ^build,则运行

终端
turbo run test --filter={./apps/web}[HEAD^1]^...

将告诉 turbo 确保构建依赖项,并在位于 ./apps/web 的应用程序的所有本地依赖项中运行 test 脚本,如果应用程序自 HEAD^1 以来已更改,则不包括该应用程序本身。

有关更多详细信息和示例,请参阅新的过滤文档

使用 --dry-run 调试和自动化

现在,您可以通过将 --dry-run--dry-run=json 附加到任何 turbo run 命令来查看 turbo run 的影响,而无需实际执行任何命令。这将产生人类可读或 JSON 输出。

Dry run 在两种情况下非常有用

Turborepo Dry Run

我们希望这将提高对 turbo 正在执行的操作的可见性,加快调试速度,并使其更容易在动态 CI/CD 系统中利用 turbo

改进的内部调度器和图表

当使用 turbo run 时,每个 package.json 任务都会被添加到内部图表中,以根据 Turborepo pipeline 中定义的推断关系映射依赖项。此任务图允许 Turborepo 有效地安排增量并发任务运行并缓存任务输出以供以后使用。

我们对内部任务调度器和生成的图结构进行了重大改进,从而提高了性能并改善了开发人员体验。例如,在许多情况下,您将不再需要使用 --include-dependencies。相反,在指定任务入口点后,新的和改进的图将代表您自动处理此图解析。

缓存输出完整性和签名验证

现在,您可以配置 Turborepo 在将远程缓存输出上传到远程缓存之前,使用带有密钥的 HMAC-SHA256 对其进行签名。当 Turborepo 下载签名的缓存工件时,它现在将验证工件的完整性和真实性。任何未能通过验证的工件都将被 Turborepo 忽略、丢弃并视为缓存未命中。

要启用此功能,请在您的 turbo.json 配置文件中设置 remoteCache 选项以包含 signature: true。然后通过声明 TURBO_REMOTE_CACHE_SIGNATURE_KEY 环境变量来指定您的密钥。

Turborepo logo
./turbo.json
{
  "$schema": "[https://turbo.net.cn/schema.json](https://turbo.net.cn/schema.json)",
  "remoteCache": {
    // Indicates if signature verification is enabled.
    "signature": true
  }
}

其他错误修复和改进

我们正在招聘!

Vercel 的 Turborepo 团队正在招聘! 今年我们已经有五名核心团队成员,并希望招聘更多成员。我们正在专门寻找全职高级构建系统工程师

下一步是什么?

除了无缝的增量采用/迁移和加速 CI/CD 之外,我们一直专注于改进 Turborepo 的日常人体工程学、安全性和可观察性。新的 --filter 标志、签名工件和 dry run 是朝着这些目标迈出的重要步骤。

接下来,我们将专注于增强本地开发体验、代码库自动化和整体 CLI 性能。

谢谢,贡献者

Turborepo 是 95 多位个人开发者和我们核心团队共同努力的成果。

此版本由以下人员贡献:@gsoltis09, @jaredpalmer, @gaspar09, @shuding, @rajatkulkarni95, @VanTanev, @Kikobeats, @tknickman, @thebanjomatic, @chelkyl, @elado, @finn-orsini, @becca, @weyert, @ekosz