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

#go #godeps #go-modules #govendor

#Вперед #godeps #go-модули #govendor

Вопрос:

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

Как мне выполнить миграцию?

Ответ №1:

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

  1. Запустите go version и убедитесь, что вы используете Go версии 1.11 или более поздней.
  2. Переместите свой код за пределы GOPATH или set 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 , что используется ваша папка поставщика.

Комментарии:

1. После того, как я запустил их при попытке сборки, я получаю эту ошибку clang: error: unable to read SDK settings for '/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk'

2. @Surya попробуйте обновить свои инструменты командной строки: xcode-select --install

3. Да, я сделал это и сделал это тоже xcode-select —switch / Library / Developer / CommandLineTools/ Все еще не повезло @Nicholas

4. Будьте осторожны с шагом 5. Если в вашем репозитории есть папка поставщика, вполне возможно, что в ней содержатся некоторые материалы, недоступные в противном случае

Ответ №2:

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

Вот из официальной документации golang:

Чтобы создать 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.заблокировать файл или любой из других девяти поддерживаемых форматов зависимостей, добавив инструкции require в соответствии с существующей конфигурацией.

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

 $ go test all
  

Ответ №3:

Еще один способ обновления до модулей.

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

    rm Gopkg.*

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

    GO111MODULE=on go mod init

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

    GO111MODULE=on go mod tidy

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

    go build

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