多语言支持
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 包一样创建依赖关系。
例如,如果你想确保在构建 web
应用程序之前先构建上面的 rust-cli
"包",可以将其安装到 web
应用程序的依赖项中:
假设有一个带有 build
任务的 turbo.json
,如下所示:


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