Turborepo

安装

使用以下方式快速开始使用 Turborepo

终端
npx create-turbo@latest

启动仓库将包含

  • 两个可部署的应用程序
  • 三个共享库,供 monorepo 的其他部分使用

有关启动器的更多详细信息,请访问 GitHub 上基本启动器的 README。您也可以使用一个更符合您工具兴趣的示例

安装 turbo

turbo 可以全局安装以及在您的存储库中安装。我们强烈建议两种方式都安装,这样您就可以利用快速、便捷的工作流程一个稳定的 turbo 版本,供您存储库中的所有开发人员使用。

全局安装

全局安装 turbo 可以为您的本地工作流程带来灵活性和速度。

终端
npm install turbo --global

全局安装后,您可以从终端通过 turbo 运行脚本,快速运行一次性命令以在存储库中使用。例如

  • turbo build:按照您存储库的依赖关系图运行 build 脚本
  • turbo build --filter=docs --dry:快速打印 docs 包的 build 任务的概要(无需运行它)
  • turbo generate:运行生成器以向您的存储库添加新代码
  • cd apps/docs && turbo build:在 docs 包及其依赖项中运行 build 脚本。有关更多信息,请访问自动包作用域部分

须知

turboturbo run 的别名。例如,turbo buildturbo run build 都将运行您的 build 任务。

避免多次全局安装

如果您之前安装过全局 turbo,请确保您使用与现有安装相同的包管理器,以避免出现意外行为。您可以使用 turbo bin 快速检查您之前使用的包管理器。

在 CI 中使用全局 turbo

在创建 CI 管道时,您还可以利用全局 turbo。有关更多信息,请访问构建 CI 指南。

存储库安装

当在存储库中与其他开发人员协作时,最好固定依赖项的版本。您可以通过将 turbo 作为存储库根目录中的 devDependency 来使用 turbo 执行此操作

终端
npm install turbo --save-dev

您可以继续使用全局安装的 turbo 来运行命令。如果存在,全局 turbo 将会退让于您存储库的本地版本。

这使您可以获得两种安装的最佳效果:在终端中轻松运行命令,同时维护一个固定的版本,以确保存储库中所有开发人员使用的一致性。

从示例开始

社区策划了一系列示例,展示如何将常用工具和库与 Turborepo 一起使用。要使用其中一个示例引导您的 monorepo,请使用 --example 标志

终端
# Use an example listed below
npx create-turbo@latest --example [example-name]
 
# Use a GitHub repository from the community
 
npx create-turbo@latest --example [github-url]
 

使用以下任意示例名称

名称描述
basic用于学习基础知识的最小 Turborepo 示例。
design-system通过在多个应用程序中共享设计系统,统一您网站的外观和风格。
kitchen-sink想看一个更深入的示例?包括多个框架,包括前端和后端。
non-monorepo在没有工作区的单个项目中使用 Turborepo 的示例
with-changesets预配置为通过 Changesets 发布包的简单 Next.js monorepo
with-docker使用 Docker 部署的带有 Express API 和 Next.js 应用程序的 Monorepo,利用 turbo prune
with-gatsby带有 Gatsby.js 和 Next.js 应用程序的 Monorepo,两者都共享一个 UI 库
with-prisma使用 Prisma 完全配置的 Next.js 应用程序的 Monorepo
with-react-native-web带有共享 UI 库的简单 React Native 和 Next.js monorepo
with-rollup使用 Rollup 打包的共享 UI 库的单个 Next.js 应用程序的 Monorepo
with-svelte带有多个共享 UI 库的 SvelteKit 应用程序的 Monorepo
with-tailwind带有多个共享 UI 库的 Next.js 应用程序的 Monorepo,所有应用程序都使用带有共享配置的 Tailwind CSS
with-vite带有多个使用 Vite 打包的 Vanilla JS 应用程序的 Monorepo,共享一个 UI 库
with-vue-nuxt带有 Vue 和 Nuxt 的 Monorepo,共享一个 UI 库

小时

节省的总计算量
开始使用
远程缓存 →

本页内容