Дана стаття, це коротка шпаргалка по управлінню модулями в Go. Ця стаття являється перекладом цієї замітки Go modules cheat sheet
Управління залежностями
Додати або оновити залежність
go get -d github.com/path/to/module
Використовувати конкренту версію
go get -d github.com/dep/two/v2@v2.1.0
Використовувати конкретну гілку
go get -d github.com/dep/commit@branch
Оновити всі модулі у вказаному каталозі
go get -d -u ./...
Видалити залежність
go get -d github.com/dep/legacy@none
Корисні команди
Улаштувати або почистити go.mod та go.sum
go mod tidy
Завантажити залежності в кеш модулів
go mod download
Ініціалізувати новий модуль
go mod init github.com/path/to/module
Перевірити чому вказаний модуль є залежністю
go mod why -m github.com/path/to/module
Зібрати та встановити бінарний файл
go install github.com/path/to/bin@latest
Анатомія go.mod
Вибір мінімальної версії (MVS)
Для побудови програми, компілятору go необхідно знати, які саме залежності потрібні та які версії використовувати.
Go використовує MVS (вибір мінімальної версії) як простий та передбачуваний спосіб для вирішення яку версію використовувати.
Це працює наступним чином:
- Модуль з якого ви запускаєте програму називається “main module”
- Пошук всіх залежностей які необхідні основному модулю (рекурсивно, використовуючи залежності файлів go.mod)
- Для кожної залежності використовується найвища версія прямо вказана в будь-якому go.mod файлі
Приклад
В цьому прикладі основний модуль залежить від A 1.0 і B 2.1.
Оскільки B 2.1 залежить від A 1.1, ця версія модуля A буде використовуватися
Оскільки A 1.1 використовується, вона також витягує C 1.1
Фінальний список залежностей
- A 1.1
- B 2.1
- C 1.1
Ще немає коментарів