go mod tidy, vendor, download & graph
Comandos de manutenção de módulos mantêm o go.mod honesto, aquecem caches, preparam fontes para builds offline e visualizam por que uma versão foi escolhida em detrimento de outra.
Busque em todas as páginas da documentação
Comandos de manutenção de módulos mantêm o go.mod honesto, aquecem caches, preparam fontes para builds offline e visualizam por que uma versão foi escolhida em detrimento de outra.
go mod tidy alinha as diretivas require com os imports realmente referenciados no seu módulo.
go mod download busca módulos para o GOMODCACHE sem compilar.
go mod vendor copia as fontes dos módulos necessários para vendor/ para builds com -mod=vendor.
go mod graph imprime o grafo de requisitos de módulos MVS consumido.
Use-os após alterações de dependência, antes de branches de release e ao depurar a seleção de versão.
Cartão de receita de referência rápida - pronto para copiar e colar.
# Normaliza os requires após um refatoramento
go mod tidy
# Aquece o cache de módulos em CI sem compilar
go mod download all
# Materializa fontes para builds offline ou auditados
go mod vendor
# Inspeciona as arestas de requisitos (pares module@version)
go mod graph | headQuando usar isso:
go mod tidy em todo PR que adiciona ou remove imports.go mod download como um passo inicial de CI com um GOMODCACHE em cache.go mod vendor quando a política exigir a revisão de fontes de terceiros no repositório.go mod graph para ferramentas de grafo ao explicar uma versão transitiva surpreendente.# Comece com um módulo que importa x/sync
go get golang.org/x/sync@v0.10.0
# Adicione um import no código, remova outro e depois execute tidy
go mod tidy
# Pré-carregue tudo que a lista de build precisa
go mod download all
# Prepare o vendor para o job de CI com -mod=vendor
go mod vendor
# Compile usando apenas vendor/ + stdlib
go build -mod=vendor -o bin/worker ./cmd/worker
# Veja por que v0.10.0 aparece
go mod graph | rg 'golang.org/x/sync'// cmd/worker/main.go
package main
import (
"fmt"
"golang.org/x/sync/errgroup"
)
func main() {
var g errgroup.Group
g.Go(func() error { fmt.Println("task"); return nil })
_ = g.Wait()
}O que isso demonstra:
go get registra uma versão; tidy remove qualquer coisa que não seja mais importada.download preenche o GOMODCACHE para compilações posteriores mais rápidas.vendor mais builds com -mod=vendor sem acessar proxies de módulos.go mod graph ajuda a auditar as arestas após atualizações.tidy carrega todos os pacotes do módulo, percorre os imports e reescreve os blocos require do go.mod para o conjunto mínimo nas versões escolhidas.go.sum com hashes para módulos diretos e indiretos retidos.download resolve a lista de build e copia arquivos .zip para o cache de módulos; nenhum arquivo .a é compilado.vendor repete o download e extrai as fontes em vendor/<module>/, reescrevendo o go.mod com um marcador de comentário opcional go mod vendor.| Comando | Modifica go.mod | Modifica vendor/ | Rede |
|---|---|---|---|
go mod tidy | Sim | Não | Pode buscar sums |
go mod download | Não | Não | Sim (a menos que em cache) |
go mod vendor | Adiciona comentário | Sim | Sim (a menos que em cache) |
go mod graph | Não | Não | Não |
go mod verify | Não | Não | Não (verificação local) |
# Pipeline regulamentado típico
go mod tidy
go mod vendor
git add go.mod go.sum vendor/
go test -mod=vendor ./...# Explica uma versão selecionada
go mod why -m golang.org/x/sync
# Lista de módulos JSON para ferramentas SBOM
go list -m -json allgo test ./... após cada tidy.go.mod sem re-vendoring quebra o CI com -mod=vendor. Correção: automatize go mod vendor no mesmo commit das atualizações de dependência.vendor/ enormes em bibliotecas - consumidores raramente querem suas cópias. Correção: use vendor em aplicações; publique bibliotecas sem vendor/ a menos que a política exija.download compila - ele apenas busca zips; erros de compilação aparecem depois em go build. Correção: siga o download com go test em CI.go mod verify - indica adulteração de cache ou go.sum incompleto. Correção: investigue espelhos de proxy; não exclua sums cegamente.go.mod - Go 1.17+ marca requires indiretos; tidy mantém os necessários para MVS. Correção: confie no tidy; use go mod why em vez de editar manualmente.| Alternativa | Use Quando | Não Use Quando |
|---|---|---|
Workspaces go work | Desenvolvimento local multi-módulo sem publicação | Serviços de módulo único |
Diretivas replace | Forks temporários ou caminhos locais | Fixação de versão a longo prazo (use tags apropriadas) |
| Proxies Athens / Artifactory | Cache de módulos compartilhado dentro da organização | Open source público com proxy.golang.org direto |
renovate / dependabot | PRs de atualização automatizados | Falta de CI para executar tidy/test em cada atualização |
download busca o conteúdo do módulo apenas no cache.
go get também altera os requisitos do go.mod.
Quando os builds não devem contatar proxies de módulos (air gap) ou a conformidade exige a revisão de fontes de terceiros no git.
Ele remove módulos que não são importados nem necessários para satisfazer o MVS.
Algumas linhas indiretas permanecem quando uma versão transitiva é importante.
Cada linha é parent@version child@version, uma aresta de requisito antes da poda MVS.
Não é idêntico à lista de build final.
go mod vendor faz vendor da lista de build completa.
Vendoring seletivo não é suportado; use replace para um fork se precisar reduzir.
Execute go mod tidy ou go get para atualizar go.sum.
Se o mismatch persistir, verifique a integridade do proxy e as tags do módulo.
Sim, para módulos sem vendor/.
Ele falha builds que modificariam go.mod silenciosamente.
O diretório que armazena árvores de módulos extraídas e caches zip.
Compartilhe-o em caches de CI para acelerar jobs.
Após qualquer alteração em imports ou go get/go install que atualize dependências.
Muitas equipes o executam em hooks de pré-commit.
Ele inclui módulos necessários para compilar pacotes no seu módulo, incluindo imports de teste.
Use go list -test para ver as arestas apenas de teste.
go mod tidy-mod=vendorVersões da Pilha: Esta página foi escrita para Go 1.26.x (padrão Green Tea GC, go fix modernizers - verifique o patch na compilação), chi (última versão - verifique na compilação), gin (última versão - verifique na compilação), echo (última versão - verifique na compilação), google.golang.org/grpc (última versão - verifique na compilação), sigs.k8s.io/controller-runtime (última versão - verifique na compilação), kubebuilder (última versão - verifique na compilação), tinygo (última versão - verifique os alvos de placa na compilação), wazero (última versão - verifique na compilação) e golangci-lint (última versão - verifique o conjunto de linters na compilação).
Revisado por Chris St. John·Última atualização: 18 de jul. de 2026