Если вы пишете на Go и используете Task как таск-раннер, то знаете боль: нужно попросить коллег установить его. У каждого свой пакетный менеджер, своя ОС, свои предпочтения. Часть поставит через Homebrew, часть через apt, часть скачает бинарник вручную. А потом окажется, что версии у всех разные.
Начиная с Go 1.24 это можно решить через механизм
go tool.Что делает
go toolGo умеет компилировать и запускать внешние инструменты, объявленные как зависимости проекта. Версия фиксируется в
go.mod, и Go кеширует скомпилированный бинарник, так что повторные вызовы работают быстро.Как подключить Task
Добавляем Task как tool-зависимость проекта:
go get -tool github.com/go-task/task/v3/cmd/task@latest
В
go.mod появится строка:tool github.com/go-task/task/v3/cmd/task
Вместо просто
task везде пишем go tool task:go tool task build
go tool task test
go tool task lint
Зачем это нужно
• Версия Task теперь зафиксирована в go.mod и go.sum, как любая другая зависимость. Dependabot или Renovate будут обновлять её автоматически.
• CI больше не требует отдельного шага установки Task. Достаточно, чтобы в образе был Go, и go tool task сделает остальное самостоятельно.
• Новые разработчики в команде не тратят время на выяснение, как и откуда ставить таск-раннер. Они просто клонируют репозиторий и работают.
📍 Навигация: Вакансии • Задачи • Собесы
🐸 Библиотека Go-разработчика
#GoToProduction
