Modules Go были введены в 1.11, прежде чем люди привыкли упаковать эти зависимости с использованием пакета DEP. Чтобы мы могли мигрировать из менеджера пакетов DEP, чтобы перейти к модулям, все, что вам нужно сделать, это выполнить эти шаги:
- Переместите свой код за пределами Гопата
Go MOD init [Путь модуля]Go MOD TIDY; Это удалит ненужный импорт и добавит косвенных.RM -RF -поставщик/; Эта папка создается DEP -пакетом и удерживает все зависимости.иди строить; Эти команды гарантируют, что все в порядке.rm -f gopkg.lock gopkg.tomlgit 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»