Мы удалили все наши использования rsc.io/quote, но он по-прежнему отображается в списке go -m all и в нашем файле go.mod:
$ go list -m all
example.com/hello
golang.org/x/text v0.3.0
rsc.io/quote v1.5.2
rsc.io/quote/v3 v3.1.0
rsc.io/sampler v1.3.1
$ cat go.mod
module example.com/hello
go 1.12
require (
golang.org/x/text v0.3.0 // indirect
rsc.io/quote v1.5.2
rsc.io/quote/v3 v3.0.0
rsc.io/sampler v1.3.1 // indirect
)
$
Почему? Потому что сборка одного пакета, как с помощью go build или go test, может легко определить, когда чего-то не хватает и что нужно добавить, но не тогда, когда что-то можно безопасно удалить. Удаление зависимости может быть выполнено только после проверки всех пакетов в модуле и всех возможных комбинаций тегов сборки для этих пакетов. Обычная команда build не загружает эту информацию, и поэтому она не может безопасно удалить зависимости.
Команда go mod tidy очищает эти неиспользуемые зависимости:
$ go mod tidy
$ go list -m all
example.com/hello
golang.org/x/text v0.3.0
rsc.io/quote/v3 v3.1.0
rsc.io/sampler v1.3.1
$ cat go.mod
module example.com/hello
go 1.12
require (
golang.org/x/text v0.3.0 // indirect
rsc.io/quote/v3 v3.1.0
rsc.io/sampler v1.3.1 // indirect
)
$ go test
PASS
ok example.com/hello 0.020s
$
Читайте также:
- Go модули: создание нового модуля
- Go модули: добавление зависимости от новой основной версии
- Go модули: обновление зависимости до новой основной версии
Комментариев нет:
Отправить комментарий