суббота, 6 июля 2019 г.

Вспомогательные темы инструмента go: модули

go help modules

Модуль представляет собой набор связанных пакетов Go. Модули - это единицы исходного кода для обмена и управления версиями. Команда go имеет прямую поддержку для работы с модулями, включая запись и разрешение зависимостей от других модулей. Модули заменяют старый подход, основанный на GOPATH, для указания, какие исходные файлы используются в данной сборке.

Предварительная поддержка модуля

Go 1.11 включает в себя предварительную поддержку модулей Go, включая новую команду 'go get' с поддержкой модулей. Поддержка будет продолжатся, сохраняя совместимость, до тех пор, пока она не будет объявлена официальной (больше не предварительной), а затем на более позднем этапе возможно будет удалена поддержка работы в GOPATH и старая команда 'go get'.

Самый быстрый способ воспользоваться преимуществами поддержки модуля Go 1.11 - выгрузить свой репозиторий в каталог за пределами GOPATH/src, создать там файл go.mod и запустить команды go из этого файлового дерева.

Для более детального управления поддержка модулей в Go 1.11 учитывает временную переменную среды GO111MODULE, для которой может быть задано одно из трех строковых значений: off, on или auto (по умолчанию). Если GO111MODULE=off, то команда go никогда не использует поддержку модулей. Вместо этого она ищет в каталогах поставщиков и GOPATH, чтобы найти зависимости; это "GOPATH mode" ("GOPATH режим"). Если GO111MODULE=on, то команда go требует использования модулей, никогда не обращаясь к GOPATH. Это называется командой, которая работает с модулем или работает в "module-aware mode" ("режиме с поддержкой модулей"). Если GO111MODULE=auto или не задано, то команда go включает или отключает поддержку модулей на основе текущего каталога. Поддержка модулей включается, только если текущий каталог находится вне GOPATH/src и сам содержит файл go.mod или находится под каталогом, содержащим файл go.mod.

В режиме с поддержкой модулей GOPATH больше не определяет значение импорта во время сборки, но по-прежнему хранит загруженные зависимости (в GOPATH/pkg/mod) и установленные команды (в GOPATH/bin, если не установлен GOBIN).


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


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

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