Начало работы с модулями в GoLang !!

В этом блоге я постараюсь осветить основы модуля go, как работает управление зависимостями в проектах GoLang.

Я попытаюсь объяснить некоторые часто используемые команды, такие как go mod tidy, go mod vendor, а также кеш мод в GoLang.

Файл go.mod - это основа управления зависимостями в GoLang. Все модули, которые необходимы или будут использоваться в проекте, хранятся в файле go.mod.
Для всех пакетов, которые мы собираемся импортировать / использовать в нашем проекте, он создаст запись этих модулей в go. .mod. Наличие файла мода go экономит усилия по запуску команды go get для каждого зависимого модуля для успешного запуска проекта.

(если кто-то хочет установить определенный пакет, мы можем установить его с помощью команды go get, например go get go.mongodb.org/mongo-driver)

go mod init — создает новый модуль, инициализируя файл go.mod, который описывает модуль. Вначале он только добавит путь к модулю и версию перехода в файл мода go.

После выполнения любой команды сборки пакета, такой как go build, go test для
в первый раз, он установит все пакеты с определенными версиями, то есть самыми последними на данный момент.
Он также создаст файл go.sum, в котором будет храниться контрольная сумма, поэтому при повторном запуске проекта он не установит все пакеты снова. Но используйте кеш, который хранится в каталоге $ GOPATH / pkg / mod (каталог кеша модуля).

go.sum - это сгенерированный файл, который вам не нужно редактировать или изменять.

Теперь go.mod добавил все модули с версией в узел «require», пример файла go.mod выглядит примерно так:

«модуль» подразумевает URL-адрес, поддерживаемый для управления версиями, т. Е. Объявление модуля.

go 1.14 - это версия golang, которую использует этот проект, которая является последней на момент создания мода go.

«require» будет включать все модули зависимостей и связанную версию, которую мы собираемся использовать в нашем проекте.

«replace» указывает на локальную версию зависимости в Go, а не на git-web. Он создаст локальную копию поставщика с доступными версиями, поэтому нет необходимости устанавливать каждый раз, когда мы хотим обратиться к поставщику.

«// косвенный» означает, что мы не используем эти зависимости внутри нашего проекта, но есть какой-то модуль, который их импортирует.
все транзитивные зависимости являются косвенными, в их число входят зависимости, которые нужны нашему проекту для правильной работы.

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

Он свяжет текущий импорт в проекте и пакетах, перечисленных в go.mod

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

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

Использование поставщика модов go:

Он создает каталог поставщиков с доступными версиями. Он копирует все сторонние зависимости в папку поставщика в корне вашего проекта.

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

очистить -modcache

Эта команда используется для очистки кеша модов, который хранится в $ GOPATH / pkg / mod. Эта команда используется для удаления установленных пакетов.
Флаг -modcache удаляет весь кеш загрузки модуля, включая распакованный исходный код версий зависимостей.

Я попытался объяснить управление зависимостями в проектах Go, а также работу некоторых команд go. Пожалуйста, дайте мне знать, если я упускаю некоторые ключевые моменты.

Присоединяйтесь к FAUN: Веб-сайт 💻 | Подкаст 🎙️ | Twitter 🐦 | Facebook 👥 | Instagram 📷 | Группа Facebook 🗣️ | Группа Linkedin 💬 | Slack 📱 | Cloud Native Новости 📰 | Еще .

Если этот пост был полезен, нажмите несколько раз кнопку хлопка 👏 ниже, чтобы выразить поддержку автору 👇