介绍

欢迎阅读 Turborepo 文档!


什么是 Turborepo?

Turborepo 是一个用于 JavaScript 和 TypeScript 代码库的高性能构建系统。它专为扩展单体仓库而设计,也能加速单包工作区中的工作流。

从个人开发者到全球最大的企业工程组织,Turborepo 通过一种轻量级的方法优化您在仓库中需要运行的任务,从而节省了多年的工程时间并节省了数百万美元的计算成本。

单体仓库问题

单体仓库有许多优点——但它们难以扩展。每个工作区都有自己的测试套件、自己的 Linting 和自己的构建过程。一个单体仓库可能需要执行数千个任务

A representation of a typical monorepo. The first application took 110 seconds to complete its tasks. The second application took 140 seconds to complete its tasks. The shared package between them took 90 seconds to complete its tasks.

这些速度减慢会严重影响您的团队构建软件的方式,尤其是在大规模情况下。反馈循环需要快速,以便开发人员能够快速交付高质量的代码。

单体仓库解决方案

The monorepo from before using Turborepo, showing how it can hit cache to complete tasks for all three packages in 80 milliseconds.

Turborepo 解决了您的单体仓库扩展问题远程缓存存储了您所有任务的结果,这意味着您的 CI 永远不需要做两次相同的工作

此外,任务调度在单体仓库中可能很困难。您可能需要先构建,然后测试,然后 Lint……

Turborepo 以最快速度调度您的任务,在所有可用核心上并行化工作。

Turborepo 可以增量采用,您可以在几分钟内将其添加到任何仓库。它使用您已经编写的 `package.json` 脚本、您已经声明的依赖项以及一个 `turbo.json` 文件。您可以将其与任何包管理器一起使用,例如 `npm`、`yarn` 或 `pnpm`,因为 Turborepo 依赖于 npm 生态系统的惯例。

如何使用这些文档

我们将尽力将术语保持在最低限度——但有一些必须了解的词语,在您阅读文档时理解它们会很重要。我们创建了一个术语表页面,以防您正在学习这些术语。

加入社区

如果您对 Turborepo 的任何方面有疑问,随时欢迎您在GitHub DiscussionsVercel CommunityTwitter 上向社区提问。