Как перейти с модулей Dep на Go

В настоящее время я использую Dep и хочу начать использовать модули Go.

Как мне перейти?


person Nicholas    schedule 13.04.2019    source источник


Ответы (3)


Переход с модулей Dep на Go очень прост.

  1. Запустите go version и убедитесь, что вы используете Go версии 1.11 или новее.
  2. Переместите свой код за пределы GOPATH или установите export GO111MODULE=on.
  3. go mod init [module path]: Это импортирует зависимости из Gopkg.lock.
  4. go mod tidy: Это удалит ненужный импорт и добавит косвенный.
  5. (Необязательно) Удалите папку поставщика (rm -rf vendor/ или переместите в корзину)
  6. go build: Сделайте тестовую сборку, чтобы проверить, работает ли она.
  7. rm -f Gopkg.lock Gopkg.toml: удалить устаревшие файлы, используемые для Dep.

Go импортировал мои зависимости из Dep, прочитав файл Gopkg.lock, а также создал файл go.mod.

Если вы хотите сохранить папку своего поставщика:

  1. Запустите go mod vendor, чтобы скопировать зависимости в папку поставщика.
  2. Запустите go build -mod=vendor, чтобы убедиться, что go build использует папку вашего поставщика.
person Nicholas    schedule 13.04.2019
comment
После запуска при попытке сборки я получаю сообщение об ошибке clang: error: unable to read SDK settings for '/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk' - person Luna Lovegood; 12.06.2019
comment
@Surya, попробуйте обновить CommandLineTools: xcode-select --install - person Nicholas; 12.06.2019
comment
Да, сделал это и тоже сделал это xcode-select --switch / Library / Developer / CommandLineTools / Все еще не повезло @Nicholas - person Luna Lovegood; 12.06.2019
comment
Будьте осторожны с шагом 5. Если в вашем репо есть папка vendor, вполне возможно, что она содержит некоторые вещи, недоступные в противном случае. - person Ali Faizan; 14.04.2020
comment
ОТЛИЧНЫЙ ответ, спасибо @Nicholas! - person MikeSchinkel; 16.04.2021

Чтобы добавить к ответу @Nicholas:

Вот официальная документация по голангу:

Чтобы создать go.mod для существующего проекта:

  1. Перейдите в корень исходного дерева модуля вне GOPATH:
$ export GO111MODULE=on                         # manually active module mode
$ cd $GOPATH/src/<project path>                 # e.g., cd $GOPATH/src/you/hello
  1. Создайте начальное определение модуля и запишите его в файл go.mod:
$ go mod init      

Этот шаг преобразует любой существующий файл dep Gopkg.lock или из любого из девяти других поддерживаемых форматов зависимостей, добавляя операторы require в соответствовать существующей конфигурации.

  1. Соберите модуль. При выполнении из корневого каталога модуля шаблон. / ... соответствует всем пакетам в текущем модуле. go build автоматически добавит недостающие или непреобразованные зависимости по мере необходимости для выполнения импорта для этого конкретного вызова сборки:
$ go build ./...
  1. Протестируйте модуль в соответствии с настройками, чтобы убедиться, что он работает с выбранными версиями:
$ go test ./...
  1. (Необязательно) Запустите тесты для вашего модуля плюс тесты для всех прямых и косвенных зависимостей, чтобы проверить несовместимость:

$ go test all
person aitchkhan    schedule 14.04.2019

Еще один способ перейти на модули.

  • Удалите Gopkg.toml и Gopkg.lock

    rm Gopkg.*

  • Инициализируйте модули Go

    GO111MODULE=on go mod init

  • Запустите go mod tidy, чтобы вытащить все сторонние модули и удалить неиспользуемые модули.

    GO111MODULE=on go mod tidy

  • Запустите сборку, чтобы убедиться, что все работает нормально

    go build

Подсказка, если вы столкнетесь с тем, что несколько модулей не найдены, вручную обновите тег модулей в файле go.mod.

person prashant    schedule 20.11.2019