Go Modules
Last updated
Was this helpful?
Last updated
Was this helpful?
go mod init <import-name>
- создает новый модуль
Standard commands like go build
or go test
will automatically add new dependencies as needed to satisfy imports (updating go.mod
and downloading the new dependencies).
Что бы импортировать модуль -- он должен быть published
go get <url>
забирает последнюю версию модуля и обновляет go.sum
go get -u
- обновить модуль до последней минорной или патч версии
go get -u=patch
- обновить модуль до последней патч версии
go get package@v1.2.3
- обновится до конкретной версии
go get package@<commit-has>
- взять версию пакета по конкретному коммиту.
go get ./...
, go mod download
- загрузит все зависимости в случае свежего репозитория (аналогично npm install
). Так же зависимости будут установлены когда выполняется go run
или go build
, но нужно очистить кэш go clean -cache -modcache -i -r
.
go list -m -version <package-name>
- список версий пакета
Нет автоматического способа обновится на другую мажорную версию. С точки зрения Go модулей, мажорная версия — это совершенно другой пакет.
Есть у вас есть модуль, то версия модуля делается путем добавления git tag-а и отправки его в репозиторий:
Версии 2 и более должны сменить путь импорта. Теперь это разные библиотеки. Мы сделаем это добавив новый версионный путь к названию нашего модуля.
Чтобы обновиться, надо соответствующим образом изменить мою программу:
go mod tidy
чистит зависимости
go mod why <module>
- скажет как этот модуль используется
On a more general note, the purpose of go mod tidy
is to also add any dependencies needed for other combinations of OS, architecture, and build tags. Make sure to run this before every release.
By default all our packages from all projects are downloaded into $GOPATH/pkg/mod
directory. If you use Docker containers when developing stuff locally, this may become an issue because dependencies are stored outside of project path (shared with a host filesystem via a bind-mounted volume).
Set GOPATH
to the project
Another way is to copy over your project dependencies to vendor folder.
go mod vendor
- создаст каталог vendor с исходниками зависимостей.