多语言支持
Turborepo 基于 JavaScript 生态系统的约定来查找要执行的脚本和任务 - 但它并不关心这些脚本做什么。 遵循在 JavaScript 工作区中指定包的指南,你可以将任何其他语言或工具链添加到 Turborepo。
例如,你的仓库中可能在 ./cli
目录中有一个 Rust 项目。 要将此目录作为包添加到你的 JavaScript 包管理器的workspace中,请将该目录添加到 workspace 定义中
然后,在目录中添加一个 package.json
现在,当你使用 turbo build
时,./cli/package.json
中的 "build"
脚本将被包含到 turbo
运行的任务中。
缓存构建产物
确保你的构建输出通过 outputs 键 进行缓存。 如果是使用 cargo 编译的 Rust CLI,则 release 构建将在 target/release
目录中创建,我们可以使用以下方式缓存它
创建依赖关系
由于该目录现在是包管理器 workspace 的一部分,因此你可以像为 JavaScript 包一样创建依赖项。
例如,如果你想确保上面的 rust-cli
“package” 在你的 web
应用程序之前构建,请将其安装到 web
应用程序的依赖项中
假设有一个 turbo.json
,其中包含类似以下的 build
任务
turbo build
将首先为 Rust CLI 创建产物,然后构建 web
应用程序。