Адрес столбца:Колонка технических статей
В то же время, вы также можете обратить внимание на мой публичный аккаунт WeChat.AlwaysBeta, вас ждет еще больше захватывающего контента.
govendor — это инструмент управления зависимостями для языка go.
Установка и инициализация
Установить:
go get -u -v github.com/kardianos/govendor
инициализация:
# Setup your project.
cd "my project in GOPATH"
govendor init
# Add existing GOPATH files to vendor.
govendor add +external
Скачать пакеты зависимостей
Эти три команды описаны ниже:
-
govendor fetch
: Можно не только загружать собственный пакет, но и загружать зависимости. -
govendor get
: Как и "go get", но копирует зависимости в папку "vendor", как описано на официальном сайте, по факту копируются только зависимости в каталог vendor. -
govendor add
: добавить пакеты из $GOPATH, что означает загрузку пакетов зависимостей из локального.
Подводя итог, если вы загружаете пакеты зависимостей, вы должны использоватьgovendor fetch
.
govendor fetch github.com/gin-gonic/gin@v1.2 # 只拷贝 gin/ 目录的内容,而不包含其子目录
govendor fetch github.com/gin-gonic/gin/...@v1.2 # 可以得到 gin/ 目录,及其所有子目录
@v1.2
Указывает, что используется версия v1.2, которая на самом деле является версией с тегом git v1.2.Эта функция очень практична.
Поговорим еще об одной проблеме, с которой можно столкнуться.Иногда мы используем сторонние зависимые пакеты, и бывают баги.После ремонта, когда мы рассчитываем использовать собственный склад, мы можем сделать следующее:
govendor get 'github.com/go-sql-driver/mysql::github.com/yongxinz/go-mysql'
оригинальный складgithub.com/go-sql-driver/mysql
Есть небольшая проблема, в настоящее время рассчитывайте использовать самостоятельную установку.github.com/yongxinz/go-mysql
.
Управление версиями
не ставь целикомvendor/
Все содержимое каталога относится к репозиторию git, только коммитvendor/vendor.json
файл в порядке.
Когда нам нужно установить пакет зависимостей после извлечения кода, нам нужно всего лишь выполнить следующую команду.
govendor sync
.gitignore
файл, ориентируясь на последние две строки:
# Created by https://www.gitignore.io/api/go
### Go ###
# Binaries for programs and plugins
*.exe
*.exe~
*.dll
*.so
*.dylib
# Test binary, build with `go test -c`
*.test
# Output of the go coverage tool, specifically when used with LiteIDE
*.out
### Go Patch ###
/vendor/
!/vendor/vendor.json
Поэтому общий процесс разработки можно сделать так: если это новый проект, то сначала установить говендор и инициализировать его, а затем через говендор установить пакет зависимостей, если это уже существующий проект, то сначала вытащить его из репозитория, затем установите говендор, а затем выполните команду синхронизации.
другие команды
govendor status
: просмотреть текущий статус пакета
govendor list +e
: просмотр зависимостей текущего проекта, но не добавленных вvendor
упаковать в
govendor add +e
: добавить зависимые пакеты. еслиvendor.json
существует, ноvendor
не существует в каталоге (т.е.govendor status
пакеты, показывающие отсутствие) также повторно добавлены
govendor remove +u
: удалить вvendor
под, но не зависимые пакеты
В реальном процессе некоторые пакеты являются публичными пакетами команды. Эта часть пакета обычно имеет свой отдельный проект и добавлена нами в$GOPATH
, вам может не понадобиться добавлять в текущий проектvendor
Вниз.
В это время можно совмещатьlist
иadd
использовать, использовать в первую очередьlist -no-status +e
Перечислите зависимые пакеты, затем используйтеgrep
фильтр, позвони еще разadd
Добавить команду:
govendor list -no-status +e | grep -v 'myteam/common' | xargs govendor add
Связанные документы:
GitHub.com/Карен Пойнт, о да/а…
woohoo.orzmap.com/post/using-…
ссылки cue.com/2018/08/09/…