Turborepo 1.8

2023年2月22日,星期三
Greg Soltis
姓名
Greg Soltis
X
@gsoltis
Nathan Hammond
姓名
Nathan Hammond
Tom Knickman
姓名
Tom Knickman
X
@tknickman
Anthony Shew
姓名
Anthony Shew
X
@anthonysheww
Jared Palmer
姓名
Jared Palmer
X
@jaredpalmer
Mehul Kar
姓名
Mehul Kar
X
@mehulkar
Chris Olszewski
姓名
Chris Olszewski
Nicholas Yang
姓名
Nicholas Yang
X
@nicholaslyang
Alexander Lyon
姓名
Alexander Lyon
X
@_arlyon

Turborepo 1.8 通过改进 turbo 对您工作空间的理解,为您的代码库带来更好的灵活性和更多控制。

立即运行 npx @turbo/codemod migrate 进行更新。

工作空间配置

在工作空间目录中,您现在可以添加 turbo.json

这将使团队能够扩展其 Monorepo 中项目的所有权,从全局配置转向对工作空间中任务的细粒度控制。

例如,假设您的 Monorepo 中有一个 Next.js 应用程序和一个 SvelteKit 应用程序,并且您想使用 Turborepo 来缓存 build 任务的输出。Next.js 的 build 脚本创建一个 .next 目录,而 SvelteKit 创建一个 .svelte-kit 目录。您可以直接在工作空间中定义 outputs 键,而不是在根目录 outputs 中添加两个构建目录

turbo.json
{
  "pipeline": {
    "build": {
      "dependsOn": ["^codegen"]
      // no need to define outputs here!
    }
  }
}
apps/my-nextjs-app/turbo.json
{
  "extends": ["//"],
  "pipeline": {
    "build": {
      // dependsOn is inherited from root
      "outputs": [".next/**", "!.next/cache/**"]
    }
  }
}
apps/my-sveltekit-app/turbo.json
{
  "extends": ["//"],
  "pipeline": {
    "build": {
      // dependsOn is inherited from root
      "outputs": [".svelte-kit/**"]
    }
  }
}

工作空间配置中的 extends 键使工作空间所有者能够使用根 turbo.json 的最佳部分,并自定义使其应用程序不同的部分(如果您习惯于从根目录定义要运行的任务,则 "//" 标记会看起来很熟悉)。

声明的键将替换根目录中的键(如果这些键存在),从而覆盖在根配置中定义的内容。未声明的键将从根配置继承。

在上面的示例中,outputs 针对两个应用程序进行了自定义,而 dependsOn 由根 turbo.json 配置,并保持为 "^codegen"

在文档中了解更多信息.

自动工作空间范围划定

Turborepo v1.7 中,turbo 成为全局可安装的,使您能够从代码库中的任何位置运行任务。但是,turbo 仍然会从根目录运行任务,从而运行您可能不打算运行的其他工作空间中的任务。

在 1.8 版本中,turbo 将自动检测您所在的工作空间并生成 --filter 语法,以将您的任务限定在该工作空间的范围内。

例如,如果您的当前目录是 apps/admin 并且您使用 turbo build 命令,则 turbo 将在后台运行 turbo build --filter=admin,专注于您正在处理的工作空间。

更轻松的迁移

升级 Turborepo 版本时,不再需要手动按正确的顺序运行单个 codemod。@turbo/codemod 现在提供了一个简单的 migrate 命令,该命令既可以将您的仓库升级到指定版本(默认为 latest)的 turbo运行任何必需的 codemod。

立即使用 npx @turbo/codemod migrate 试用。

社区

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

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

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