tg-me.com/golang_lib/467
Last Update:
Pragmatic go.mod
bump
Недавно я открыл pull request, в котором просто обновил go.mod
, и мне задали интересный вопрос:
> Почему ты обновляешь go.mod
, если он и так работает?
Хороший вопрос. Короткий ответ: потому что это имеет значение.
Длинный ответ...
Что делает go mod tidy
?
Он обновляет:
- go.mod
:
- удаляет неиспользуемые зависимости;
- добавляет недостающие;
- обновляет версии go
, toolchain
, require
и replace
, если это необходимо.
- go.sum
:
- добавляет хэши для новых зависимостей;
- удаляет хэши для неиспользуемых.
Что делает go mod tidy -go=1.xx
?
То же самое, но моделируя, как если бы у вас был Go 1.xx. Это может быть полезно, если вы используете более старую версию Go, но хотите подготовить модуль к сборке на более новой версии, или наоборот.
Почему я обновляю go.mod
?
Есть несколько причин.
Обновление версии Go
Когда я обновляю go
, я также обновляю go.mod
. Это позволяет понять, с какой версией Go должен работать проект. Это особенно важно для CI/CD и будущих участников команды.
Поддержание актуальности зависимостей
Иногда go mod tidy
может подтянуть более свежую версию зависимости, особенно если у вас были временные изменения или вы что-то откатывали. Это помогает избежать накопления "грязи" в go.mod
.
Удаление лишнего
Если вы удалили использование какого-либо пакета, но не запускали tidy
, зависимость может остаться в go.mod
и go.sum
. Это лишний шум.
Минимизация различий
Чем чаще вы запускаете tidy
, тем меньше изменений накапливается, а значит, легче делать ревью и откаты при необходимости.
Безопасность
Иногда обновление зависимости может подтянуть фиксы для уязвимостей. Даже если вы не используете уязвимый код напрямую, он может быть в go.sum
.
TL;DR
- go.mod
и go.sum
— это часть исходного кода, и за ними нужно ухаживать.
- go mod tidy
помогает держать их в порядке.
- Обновление go.mod
даже без изменения логики — это хорошая практика.
https://carlosbecker.com/posts/pragmatic-gomod-bump/
👉 @golang_lib
BY Библиотека Go (Golang) разработчика
Warning: Undefined variable $i in /var/www/tg-me/post.php on line 283
Share with your friend now:
tg-me.com/golang_lib/467