Turborepo до сих пор был инструментом для монорепозиториев на JavaScript: он кеширует результаты задач, гоняет только то, что затронули изменения, и умеет отдавать кеш на всю команду. В версии 2.10.6 от 22 июля он научился работать с репозиторием, где вообще нет ни одного package․json.
Что внутри:
🔘 поддержка Cargo-воркспейсов включается флагом experimentalCargoWorkspaces в turbo.json, после чего крейты становятся обычными узлами графа пакетов; 🔘 задачи выводятся из самого Cargo: build, test, check, bench превращаются в соответствующие cargo-команды с --package и --locked, lint и clippy зовут cargo clippy, docs зовёт cargo doc; 🔘 run и dev появляются у крейта только если у него ровно один бинарник; 🔘 библиотечные крейты остаются в графе, поэтому --filter и подсчёт затронутых пакетов идут по реальным зависимостям Rust; 🔘 в TUI перестали теряться цвета, а turbo watch переписали; 🔘 при обрезке репозитория сохраняются записи node@runtime: из pnpm-локфайла и расширения пакетов Yarn.
Пригодится тем, у кого в монорепозитории и фронтенд, и Rust-сервисы, а кеширование и определение затронутых пакетов до сих пор жило только на половине проекта.
Cargo-поддержка помечена как экспериментальная, у неё отдельный раздел документации. Обновлять turbo придётся везде сразу, включая CI и локальные хуки: старые версии не понимают новых future-флагов и просто откажутся запускаться.
Язык: Rust. Лицензия: MIT.
@prog_tools