tgoop.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) разработчика
Share with your friend now:
tgoop.com/golang_lib/467
