понедельник, 1 марта 2021 г.

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

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

go mod why [-m] [-vendor] packages...

go mod why показывает кратчайший путь в графе импорта от основного модуля к каждому из перечисленных пакетов.

Вывод представляет собой последовательность строф, по одной для каждого пакета или модуля, названного в командной строке, разделенных пустыми строками. Каждая строфа начинается со строки комментария, начинающейся с символа #, обозначающего целевой пакет или модуль. Последующие строки показывают путь через граф импорта, по одному пакету в строке. Если на пакет или модуль нет ссылки из основного модуля, в строфе будет отображаться единственное примечание в скобках, указывающее на этот факт.

Например:

$ go mod why golang.org/x/text/language golang.org/x/text/encoding
# golang.org/x/text/language
rsc.io/quote
rsc.io/sampler
golang.org/x/text/language

# golang.org/x/text/encoding
(main module does not need package golang.org/x/text/encoding)

Флаг -m заставляет go mod why обрабатывать свои аргументы как список модулей. go mod why будет печатать путь к любому пакету в каждом из модулей. Обратите внимание, что даже когда используется -m, go mod why запрашивает граф пакета, а не граф модуля, напечатанный go mod graph.

Флаг -vendor заставляет go mod why игнорировать импорт в тестах пакетов вне основного модуля (как это делает go mod vendor). По умолчанию go mod why считает, что граф пакетов соответствует шаблону all. Этот флаг не действует после Go 1.16 в модулях, которые объявляют go 1.16 или выше (с использованием директивы go в go.mod), поскольку значение all изменилось, чтобы соответствовать набору пакетов, подобранному go mod vendor.


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


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

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