четверг, 11 февраля 2021 г.

Модули в Golang: совместимость с немодульными репозиториями

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

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

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


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


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

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