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