返回博客

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 成为您的首选构建工具。