go mod tidy, vendor, download & graph
Los comandos de mantenimiento de módulos mantienen go.mod honesto, calientan las cachés, empaquetan fuentes para compilaciones sin conexión y visualizan por qué una versión prevaleció sobre otra.
Busca en todas las páginas de la documentación
Los comandos de mantenimiento de módulos mantienen go.mod honesto, calientan las cachés, empaquetan fuentes para compilaciones sin conexión y visualizan por qué una versión prevaleció sobre otra.
go mod tidy alinea las directivas require con las importaciones realmente referenciadas en tu módulo.
go mod download descarga módulos a GOMODCACHE sin compilarlos.
go mod vendor copia las fuentes de los módulos requeridos a vendor/ para compilaciones con -mod=vendor.
go mod graph imprime el grafo de requisitos de módulos MVS consumido.
Úsalos después de cambios en las dependencias, antes de las ramas de lanzamiento y al depurar la selección de versiones.
Tarjeta de receta de referencia rápida - lista para copiar y pegar.
# Normalizar requires después de una refactorización
go mod tidy
# Calentar la caché de módulos en CI sin compilar
go mod download all
# Materializar fuentes para compilaciones aisladas o auditadas
go mod vendor
# Inspeccionar los bordes de requisitos (pares módulo@versión)
go mod graph | headCuándo usar esto:
go mod tidy en cada PR que agregue o elimine importaciones.go mod download como un paso temprano de CI con una GOMODCACHE cacheada.go mod vendor cuando la política requiera revisar fuentes de terceros en el repositorio.go mod graph a herramientas de grafos cuando expliques una versión transitiva sorprendente.# Empezar desde un módulo que importa x/sync
go get golang.org/x/sync@v0.10.0
# Agregar una importación en el código, eliminar otra, y luego hacer tidy
go mod tidy
# Pre-cargar todo lo que la lista de compilación necesita
go mod download all
# Empaquetar para el trabajo de CI de -mod=vendor
go mod vendor
# Compilar usando solo vendor/ + stdlib
go build -mod=vendor -o bin/worker ./cmd/worker
# Ver por qué aparece v0.10.0
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()
}Lo que esto demuestra:
go get registra una versión; tidy elimina cualquier cosa que ya no se importe.download puebla GOMODCACHE para compilaciones posteriores más rápidas.vendor más compilaciones con -mod=vendor sin contactar a los proxies de módulos.go mod graph ayuda a auditar los bordes después de las actualizaciones.tidy carga todos los paquetes del módulo, recorre las importaciones y reescribe los bloques require de go.mod al conjunto mínimo en las versiones elegidas.go.sum con los hashes para los módulos directos e indirectos retenidos.download resuelve la lista de compilación y copia los archivos .zip en la caché de módulos; no se compilan archivos .a.vendor repite la descarga y luego extrae las fuentes bajo vendor/<module>/, reescribiendo go.mod con un marcador de comentario opcional go mod vendor.| Comando | Modifica go.mod | Modifica vendor/ | Red |
|---|---|---|---|
go mod tidy | Sí | No | Puede descargar sumas |
go mod download | No | No | Sí (a menos que esté en caché) |
go mod vendor | Agrega comentario | Sí | Sí (a menos que esté en caché) |
go mod graph | No | No | No |
go mod verify | No | No | No (verificación local) |
# Típico pipeline regulado
go mod tidy
go mod vendor
git add go.mod go.sum vendor/
go test -mod=vendor ./...# Explicar una versión seleccionada
go mod why -m golang.org/x/sync
# Lista de módulos JSON para herramientas SBOM
go list -m -json allrequire eliminados pueden ocultar compilaciones rotas en paquetes no utilizados. Solución: go test ./... después de cada tidy.go.mod sin volver a empaquetar rompe las CI con -mod=vendor. Solución: automatizar go mod vendor en el mismo commit que los incrementos de dependencias.vendor/ a menos que la política lo exija.download compila - solo descarga zips; los errores de compilación aparecen más tarde en go build. Solución: seguir la descarga con go test en CI.go mod verify - indica manipulación de caché o go.sum incompleto. Solución: investigar los mirrors del proxy; no eliminar las sumas a ciegas.require indirectos; tidy mantiene los necesarios para MVS. Solución: confía en tidy; usa go mod why en lugar de editar manualmente.| Alternativa | Usar Cuando | No Usar Cuando |
|---|---|---|
Espacios de trabajo go work | Desarrollo local de múltiples módulos sin publicar | Servicios de un solo módulo |
Directivas replace | Forks temporales o rutas locales | Fijación de versiones a largo plazo (usar etiquetas adecuadas) |
| Proxies Athens / Artifactory | Caché de módulos compartida dentro de la organización | Código abierto público con proxy.golang.org directo |
renovate / dependabot | PRs de incremento automatizados | Si no tienes CI para ejecutar tidy/test en cada incremento |
download solo descarga el contenido del módulo a la caché.
go get también cambia los requisitos de go.mod.
Cuando las compilaciones no deben contactar a los proxies de módulos (aire aislado) o el cumplimiento exige revisar el código fuente de terceros en git.
Elimina los módulos que no se importan ni se necesitan para satisfacer MVS.
Algunas líneas indirectas permanecen cuando una versión transitiva es importante.
Cada línea es padre@versión hijo@versión, un borde de requisito antes de la poda MVS.
No es idéntico a la lista de compilación final.
go mod vendor empaqueta la lista completa de compilación.
El empaquetado selectivo no está soportado; usa replace a un fork si necesitas recortar.
Ejecuta go mod tidy o go get para actualizar go.sum.
Si la discrepancia persiste, verifica la integridad del proxy y las etiquetas del módulo.
Sí para módulos sin vendor/.
Falla las compilaciones que mutarían go.mod silenciosamente.
El directorio que almacena los árboles de módulos extraídos y las cachés de zip.
Compártelo en las cachés de CI para acelerar los trabajos.
Después de cualquier cambio en las importaciones o go get/go install que actualice las dependencias.
Muchos equipos lo ejecutan en hooks de pre-commit.
Incluye los módulos necesarios para compilar paquetes en tu módulo, incluidas las importaciones de prueba.
Usa go list -test para ver los bordes solo de prueba.
go mod tidy-mod=vendorVersiones de Stack: Esta página fue escrita para Go 1.26.x (predeterminado Green Tea GC, go fix modernizers - verificar parche en la compilación), chi (última - verificar en la compilación), gin (última - verificar en la compilación), echo (última - verificar en la compilación), google.golang.org/grpc (última - verificar en la compilación), sigs.k8s.io/controller-runtime (última - verificar en la compilación), kubebuilder (última - verificar en la compilación), tinygo (última - verificar objetivos de placa en la compilación), wazero (última - verificar en la compilación), y golangci-lint (última - verificar conjunto de linters en la compilación).
Revisado por Chris St. John·Última actualización: 18 jul 2026