Golang modules
Go modules are a collection of packages that are intended to be released together.
You define your project requirements in at the module level,
and you can publish module-versions to the go package index.
Go.mod file
The go.mod file stores metadata about your project, and it's requirements.
There are several tools to help manage it, but this is the source of truth.
Module Requirements
Tools
See also go.mod file .
go mod graph # show requirements tree go mod tidy # ensure go.mod matches src go mod vendor # go get ... # add requirement to go.modVendoring
Publishing Modules
Public Modules
All published packages are public by default.
You canretract
package versions if you discovered a mistake.
Official package publishing instructions here.Release Preparation
go mod tidy go test git tag v0.0.1 git push origin v0.0.1Publishing your package
# adds your package to the index go list # add specific module-version to a specific-index GOPROXY=proxy.golang.org \ go list \ -m example.com/mymodule@v0.1.0Private Modules
Go executables are installed/built from src.
You'll need to add your package to$GOPRIVATE
envvar to stop it from being indexed.
While unset$GONOPROXY
and$GONOSUMDB
, will fall back on$GOPRIVATE
.
Otherwise you'll want to set these to prevent your packages from getting added to the index.