Правильный инструмент продаж Golang

Я хочу, чтобы все мои зависимости находились под контролем исходного кода вместе с моими проектами в Go.

Я вижу два основных инструмента для выполнения этой работы (Dep и Glide).

Проблема в том, что Деп заявляет на своей странице, что:

dep был «официальным экспериментом». Цепочка инструментов Go, начиная с версии 1.11, (экспериментально) приняла подход, который резко отличается от dep. В результате мы продолжаем разработку dep, но в первую очередь ориентируемся на разработку альтернативного прототипа поведения управления версиями в цепочке инструментов.

В то время как Glide, с другой стороны, похоже, не проявляет никакой активности в своем репо.

Я хочу знать, какой "лучший" способ вы, ребята, справляетесь с этим?

Я действительно люблю Go и его философию, но я должен признать, что управление зависимостями действительно запутано.


person Matias Barrios    schedule 02.04.2019    source источник


Ответы (2)


По моему опыту, мое решение использует модули go для управления зависимостями. У меня возникли некоторые проблемы с dep при установке зависимостей, и мне потребовалось много усилий, чтобы исправить это. Поэтому я переключаюсь на модуль go, и он работает, как и ожидалось, в производственной среде. Модуль — это встроенная функция Go, которая была представлена ​​в Go 1.11, а начиная с Go 1.13 режим модуля будет использоваться по умолчанию для всей разработки.

Модули Go упрощают и ускоряют установку зависимостей. С модулем все зависимости будут перечислены в go.mod файле:

module example.com/hello

require (
    github.com/some/dependency v1.2.3
    github.com/another/dependency/v4 v4.0.0
)

Как получить зависимость:

go get github.com/some/[email protected]
person Tuan Nguyen    schedule 17.07.2019

Я не эксперт по Golang, поэтому могу ошибаться, но согласно golang/go wiki:

Для любых рабочих нагрузок используйте dep или перейдите на него, если вы еще этого не сделали.

Предложение было принято, и vgo был объединен с деревом Go в версии 1.11.

Вы сможете поэкспериментировать с рабочим процессом модуля из Go 1.11, так как он включен в качестве эксперимента в этот выпуск.

Таким образом, похоже, что поддержка модулей пока находится в экспериментальном режиме, и вы должны придерживаться dep для любого готового кода, пока vgo не будет полностью интегрирован.

Обратите внимание, что у dep есть свой набор проблем, как описано в этой статье, в основном связанный с конфликтующими версиями и управлением транзитивными зависимостями. Пока vgo не будет считаться готовым к производству, насколько я понимаю, вам придется решать эти проблемы самостоятельно.

изменить: добавлен раздел о проблемах с деп.

person Sir Celsius    schedule 02.04.2019