Modules Go были введены в 1.11, прежде чем люди привыкли упаковать эти зависимости с использованием пакета DEP. Чтобы мы могли мигрировать из менеджера пакетов DEP, чтобы перейти к модулям, все, что вам нужно сделать, это выполнить эти шаги:
- Переместите свой код за пределами Гопата
Go MOD init [Путь модуля]
Go MOD TIDY
; Это удалит ненужный импорт и добавит косвенных.RM -RF -поставщик/
; Эта папка создается DEP -пакетом и удерживает все зависимости.иди строить
; Эти команды гарантируют, что все в порядке.rm -f gopkg.lock gopkg.toml
git commit -m "миграция из DEP в модули Go"
Перед GO 1.11 управление зависимостями было непростой задачей. Сообщество GO придумало различное решение для него, и одним из популярных было деп
Подобно многим инструментам управления зависимостями DEP имеет файл, который отслеживает все зависимости, которые назывались Gopkg.toml
а также файл для блокировки используемой точной версии, которая является Gopkg.lock
. папка Продавец
Удерживает файлы зависимости, выполняя команду DEP обеспечить
сделает все чеки Nessecary для приложения.
Перед ходом 1.11, ваш проект должен быть местами в Гопат
И вы должны были уважать планировку на рабочем месте
Рабочее место
После GO 1.11 Ваш код может быть местами в любом месте, GO может обрабатывать непосредственно ваши зависимости с введением GO модули Анкет
После установки GO1.1x Начните перемещать код за пределами Гопат
(Мой гопат был ~/desktop/go
)
~/Desktop/Go $ mv ~/go/src/github.com/houssemcharf/vengine.
Теперь проект находится в ~/Desktop/go/vengine
Выполнение модулей GO
Go Mod Init
После выполнения команды вы заметите, что в вашем каталоге появилось 2 файла.
go.mod | go.sum
Первый будет содержать все зависимости, необходимые для запуска вашего приложения, должны быть структурированы таким образом.
module vengine go 1.13 require ( vengine/config v0.0.0 vengine/utils v0.0.0 github.com/davecgh/go-spew v1.1.1 github.com/hashicorp/vault/api v1.0.4 // indirect github.com/nlopes/slack v0.6.0 github.com/sirupsen/logrus v1.4.2 // indirect github.com/spf13/viper v1.4.0 // indirect github.com/tidwall/gjson v1.3.2 // indirect ) replace ( vengine/config v0.0.0 => ./config vengine/utils v0.0.0 => ./utils )
Второй файл будет содержать контрольную сумму различных зависимостей, чтобы гарантировать, что он интегрируется, а также ИТ -версию. это должно выглядеть примерно так
github.com/hashicorp/go-cleanhttp v0.5.0/go.mod h1:JpRdi6/HCYpAwUzNwuwqhbovhLtngrth3wmdIIUrZ80= github.com/hashicorp/go-cleanhttp v0.5.1 h1:dH3aiDG9Jvb5r5+bYHsikaOUIpcM0xvgMXVoDkXMzJM= github.com/hashicorp/go-cleanhttp v0.5.1/go.mod h1:JpRdi6/HCYpAwUzNwuwqhbovhLtngrth3wmdIIUrZ80= github.com/hashicorp/go-hclog v0.0.0-20180709165350-ff2cf002a8dd/go.mod h1:9bjs9uLqI8l75knNv3lV1kA55veR+WUPSiKIWcQHudI=
Давайте пройдемся через первый файл модуль
относится к названию вашего приложения Go 1.13
это версия GO. В пределах Требуется
Мы найдем список зависимостей. Чтобы избежать любых дублированных зависимостей, мы можем выполнить Go MOD TIDY
с последующим иди строить
Анкет
** Необязательно ** Иногда вам нужно структурировать свой проект в разных пакетах, и в моем случае у меня было два отдельных модуля, которые мне нужны в моем проекте. Чтобы избежать трудностей во время сборки специально в этом случае, рекомендуется создавать различные модули в разных пакетах, выполняя Go Mod init
Анкет
. ├── main.go ├── config │ ├── config.go │ ├── config.json │ └── go.mod ├── go.mod ├── go.sum ├── LICENSE ├── Makefile ├── README.md ├── utils ├── go.mod ├── utils.go └── utils_test.go
Как мы можем видеть go.mod
помещается в разные пакеты
- конфигурация
- утилит
Обратите внимание, что в предыдущем go.mod
Мы использовали заменить, что указывает на нашу свежеприготовленную go.mod
В разных пакетах.
replace ( vengine/config v0.0.0 => ./config vengine/utils v0.0.0 => ./utils )
Стоит также упомянуть, что эти пакеты также упоминаются в go.mod в рамках требуемого каталога. Проверьте пример выше. Для окончательной проверки выполнить иди строить
Анкет
Оригинал: «https://dev.to/houssemcharf/migrating-from-dep2go-modules-8f4»