суббота, 27 февраля 2021 г.

Модули в Golang: команды с поддержкой модулей, go mod tidy

Использование:

go mod tidy [-e] [-v]

go mod tidy удостоверяется, что файл go.mod соответствует исходному коду модуля. Он добавляет любые отсутствующие требования к модулям, необходимые для сборки пакетов и зависимостей текущего модуля, и удаляет требования к модулям, которые не предоставляют никаких соответствующих пакетов. Он также добавляет все недостающие записи в go.sum и удаляет ненужные записи.

Флаг -e (добавлен в Go 1.16) заставляет go mod tidy попытаться продолжить работу, несмотря на ошибки, обнаруженные при загрузке пакетов.

Флаг -v заставляет go mod tidy выводить информацию об удаленных модулях в стандартную ошибку.

go mod tidy работает, рекурсивно загружая все пакеты в основной модуль и все пакеты, которые они импортируют. Сюда входят пакеты, импортированные тестами (включая тесты в других модулях). go mod tidy действует так, как будто все теги сборки включены, поэтому он будет учитывать исходные файлы для конкретной платформы и файлы, требующие настраиваемых тегов сборки, даже если эти исходные файлы обычно не собираются. Есть одно исключение: тег сборки ignore не включен, поэтому файл с ограничением сборки // +build ignore не будет рассматриваться. Обратите внимание, что go mod tidy не будет рассматривать пакеты в основном модуле в каталогах с именем testdata или с именами, начинающимися с . или _, если эти пакеты явно не импортированы другими пакетами.

После того, как go mod tidy загрузит этот набор пакетов, он удостоверяется, что каждый модуль, который предоставляет один или несколько пакетов, либо имеет директиву require в файле go.mod основного модуля, либо требуется для другого необходимого модуля. go mod tidy добавит требование о последней версии для каждого отсутствующего модуля. go mod tidy удалит директивы require для модулей, которые не предоставляют никаких пакетов в описанном выше наборе.

go mod tidy может также добавлять или удалять // indirect комментарии к директивам require. // indirect комментарий обозначает модуль, который не предоставляет пакеты, импортированные пакетами в основном модуле. Эти требования будут присутствовать, если модуль, импортирующий пакеты в косвенной зависимости, не имеет файла go.mod. Они также могут присутствовать, если косвенная зависимость требуется в более высокой версии, чем подразумевается графом модуля; обычно это происходит после выполнения такой команды, как go get -u ./... .


Читайте также:


Комментариев нет:

Отправить комментарий