Рубрики
Uncategorized

мигрирование из модулей DEP2GO

TL; Dr Go Модули были введены в 1.11, прежде чем люди упаковали их … Tagged with Go, DevOps.

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»