多语言支持
Turborepo 在查找要执行的脚本和任务时,基于 JavaScript 生态系统的约定。但它并不关心这些脚本具体做什么。遵循有关在 JavaScript 工作区中指定包的指南,您可以将任何其他语言或工具链添加到 Turborepo。
例如,您可能在仓库的 ./cli 目录中有一个 Rust 项目。要将此目录添加为 JavaScript 包管理器的工作区中的一个包,请将该目录添加到工作区定义中。
然后,在目录中添加一个 package.json 文件。
现在,当您运行 turbo build 时,./cli/package.json 中的 "build" 脚本将包含在 turbo 运行的任务中。
缓存构建产物
请确保使用 turbo.json 中的outputs 键来缓存构建的输出。对于使用 cargo 编译的 Rust CLI,发布构建将创建在 target/release 目录中,我们可以使用以下方式进行缓存:


创建依赖关系
由于该目录现在是包管理器工作区的一部分,因此您可以像创建 JavaScript 包的依赖关系一样创建依赖关系。
例如,如果您想确保上面的 rust-cli "包" 在构建您的 web 应用程序之前被构建,请将其安装到 web 应用程序的依赖项中。
给定一个具有 build 任务的 turbo.json,如下所示:


turbo build 将首先创建 Rust CLI 的产物,然后构建 web 应用程序。