intermediate
Turborepo
Используйте pipeline задач Turborepo, hashing, remote cache и dependency-aware execution в JS-монорепо.
Turborepo оркестрирует скрипты пакетов через pipeline в `turbo.json`: задачи объявляют `dependsOn`, `outputs` и `inputs` для топологического порядка и local/remote cache.
{
"pipeline": {
"build": { "dependsOn": ["^build"], "outputs": ["dist/**"] },
"test": { "dependsOn": ["build"], "outputs": [] }
}
}
`^build` — сначала build upstream-пакетов. Cache hit требует детерминированных задач и полного hashing inputs, включая lockfile и релевантные env.
На интервью: зависимости pipeline, безопасность remote cache, `--filter`, env в ключах hash и отличие от одних только workspaces.
Типовые ошибки: кэш flaky-тестов; нет `outputs` и ложные hits; секреты в env общего cache.
Компромисс — экономия CI времени против строгости конфига для корректности кэша.
Чеклист:
- `outputs` для кэшируемых задач.
- Hash env, влияющих на build.
- Детерминированные задачи.
- Проверка miss/hit в CI.