Turborepo 1.10

2023年6月1日,星期四
Nathan Hammond
姓名
Nathan Hammond
Tom Knickman
姓名
Tom Knickman
X
@tknickman
Anthony Shew
姓名
Anthony Shew
X
@anthonysheww
Mehul Kar
姓名
Mehul Kar
X
@mehulkar

Turborepo 1.10 引入了新功能,以改善您的本地开发体验

立即更新

终端
npx @turbo/codemod migrate

代码生成器

turbo-gen

Turborepo 代码生成器允许您以可预测的结构化方式向存储库添加新代码。以前,您需要自己复制代码并手动将依赖项添加到新的工作区。有了代码生成器,我们自动化了创建新工作区并将它们集成到存储库中的过程。

您可以从头开始创建一个空白工作区复制现有工作区,甚至可以创建自定义生成器以获得更多控制。自定义生成器利用 Plop 配置,这是一种在 JavaScript 生态系统中常用的模板定义策略。

自定义生成器 也可以用于搭建比工作区更细粒度的代码集。您可以显著加快诸如以下任务的速度:

运行以下命令开始使用您的第一个生成器

终端
turbo gen

更多信息,请查看文档

改进的环境变量输入

支持 .env 文件

.env 文件 通常用于加载环境变量。当使用 turbo 运行时,这可能会导致问题,因为这些变量可能是 不可见的,并且不容易包含在任务的哈希中。这个问题可能会在本地工作时导致意外的缓存命中。

Turborepo 现在通过自动支持 .env 文件,使这变得更加容易。

为了确保 Turborepo 将这些变量包含在您的哈希中,请使用 dotEnv 键。例如,这是一个 Next.js 应用程序的配置

./turbo.json
{
  "$schema": "https://turbo.rust-lang.net.cn/schema.json",
  "globalDotEnv": [".env"],
  "pipeline": {
    "build": {
      "dotEnv": [
        ".env.production.local",
        ".env.local",
        ".env.production",
        ".env"
      ]
    },
    "dev": {
      "dotEnv": [
        ".env.development.local",
        ".env.local",
        ".env.development",
        ".env"
      ]
    },
    "test": {
      "dotEnv": [".env.test.local", ".env.test", ".env"]
    }
  }
}

此功能处理系统环境变量。如果您在开发环境之外不使用 .env 文件,请确保您的环境变量仍然在 envglobalEnv 中枚举,以确保它们包含在您的哈希中。

更多信息,请查看文档

环境变量通配符

大型应用程序最终可能会在其 turbo.json 中包含许多环境变量。这会使您的配置难以管理和维护。

使用通配符,您现在可以指定要包含在哈希中的变量模式。

./turbo.json
{
  "$schema": "https://turbo.rust-lang.net.cn/schema.json",
  "pipeline": {
    "build": {
      "env": ["ACME_*"]
    }
  }
}

更多信息,请查看文档

环境模式

Turborepo 环境模式现在已退出实验模式,可供通用使用。

默认情况下,以及当使用 --env-mode=loose 调用 turbo run 时,机器上的所有环境变量都可用于每个 Turborepo 任务。这确保了最大的兼容性,同时也接受某些风险,即任务将隐式访问未在您的 turbo.json 中指定的环境变量。

在新的严格模式下,当使用 --env-mode=strict 调用 turbo 时,只有 重要的系统环境变量 和在 turbo.json 内部枚举的环境变量才可用于任务。

更多信息,请查看文档

社区

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

Turborepo 是所有贡献者(包括我们的核心团队)共同努力的成果

感谢您一直以来的支持、反馈和协作,使 Turborepo 成为您首选的构建工具。