Начало работы с модулями в 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 Новости 📰 | Еще .
Если этот пост был полезен, нажмите несколько раз кнопку хлопка 👏 ниже, чтобы выразить поддержку автору 👇