Замена полезна, если вы хотите использовать определенную версию зависимости в текущем модуле:
Вы можете использовать эту версию, потому что это вилка с необходимыми вам модификациями .
require example.com/original v1.0.0
replace example.com/original => github.com/... v1.0.1
(Примечание: вы можете заменить v1.0.1
на master
(или другую ветку), и он будет заменен псевдо-версией в следующий раз, когда вы build
/ test
/ mod tidy
.)
По какой-то причине вы не сможете изменить младшие версии этой конкретной зависимости. Возможно, для проверки поведения требуется дополнительное тестирование, или, возможно, вы пробовали более новые версии, но они не работают.
Возможно, вы вносите изменения в несколько проектов или у вас есть несколько модулей в единое репо, и вы хотите иметь возможность вносить изменения во все модули одновременно во время разработки.
Чтобы замена была значимой, вы должны быть в зависимости от модуля, который вы заменяете . Вы добавляете зависимости в go.mod
, используя require
, поэтому вы не можете только использовать replace
.
A replace
- это дополнительная работа по обслуживанию, и замена всего не нужно вообще. replace
следует использовать выборочно, когда это необходимо, как в ситуациях выше.
Наконец, добавление замены не делает выбор версии более «точным». Добавление замены затрудняет обновление зависимости. Человеку, скорее всего, потребуется ввести go и сказать: «Да, мы делаем хотим обновить эту зависимость», вместо того, чтобы позволить Выбор минимальной версии решать, когда обновлять зависимость, что может произойти случайно без человек замечает. Как отмечалось выше, для некоторых проектов это может быть плохо.