tg-me.com/golang_lib/476
Last Update:
🔧 Локальное исправление зависимостей в Go
Иногда при разработке на Go возникает необходимость временно изменить внешний модуль — например, внести исправление, которое ещё не вмержили в основной репозиторий. Go предоставляет удобный механизм для этого.
🧩 Используем replace
в go.mod
В Go можно использовать директиву replace
, чтобы указать локальный путь вместо внешней зависимости:
replace github.com/some/module => ../local-copy/module
Теперь при сборке Go будет использовать код из
../local-copy/module
вместо кода, загружаемого из Git.Это особенно удобно, если вы:
* работаете над фиксом бага во внешнем пакете;
* тестируете pull request;
* занимаетесь временным форком библиотеки.
⚠️ Что важно помнить
1. Не коммитьте
replace
в main
ветку!Эти изменения локальны и не должны попадать в боевой код.
2.
go get
не влияет на replace
Даже если вы обновите модуль через
go get
, replace
всё равно будет использовать локальный путь.3. Проверьте
go.sum
После замены зависимостей могут измениться хэши в
go.sum
. Это нормально, но стоит за этим следить.🛠 Пример сценария
Вы нашли баг в
github.com/example/lib
, клонировали его:
git clone https://github.com/example/lib ~/dev/lib-patched
Затем в
go.mod
вашего проекта:
replace github.com/example/lib => ~/dev/lib-patched
Теперь
go build
будет использовать вашу локальную версию.https://eli.thegreenplace.net/2024/locally-patching-dependencies-in-go/
👉 @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/476