go mod tidy în Go

Aduce go.mod și go.sum în acord cu importurile din cod: adaugă dependențele lipsă și le șterge pe cele nefolosite.

Sintaxă
go mod tidy
go mod tidy -v
go mod tidy -diff    # doar arată ce s-ar schimba (Go 1.23)

Ce face go mod tidy

go mod tidy citește toate importurile din modul (inclusiv din teste) și actualizează go.mod: adaugă în require modulele lipsă (descărcând ultima versiune), șterge modulele care nu mai sunt importate și completează go.sum cu sumele de control.

Rulează-l după ce adaugi sau ștergi importuri, înainte de commit. Când nu este nimic de schimbat, nu afișează nimic. În CI se folosește go mod tidy -diff, care iese cu eroare dacă fișierele nu sunt la zi, fără să le modifice.

Parametri

Parametru Descriere
-v Afișează modulele șterse.
-diff Nu modifică nimic; afișează diferențele și iese cu cod nenul dacă ar fi schimbări.

Exemple

Exemplul 1: Adăugarea automată a unei dependențe

Am scris în cod import "github.com/google/uuid"; go mod tidy găsește modulul, îl descarcă și îl trece în go.mod.

go mod tidy
cat go.mod

Rezultat în terminal

go: finding module for package github.com/google/uuid
go: downloading github.com/google/uuid v1.6.0
go: found github.com/google/uuid in github.com/google/uuid v1.6.0
module exemplu.ro/magazin

go 1.27.2

require github.com/google/uuid v1.6.0

Exemplul 2: Ștergerea unei dependențe nefolosite

După ce am scos importul din cod, -v arată ce a fost șters.

go mod tidy -v
go mod tidy

Rezultat în terminal

unused github.com/google/uuid

Greșeli frecvente

  • Adăugarea manuală de linii în go.mod fără go mod tidy: go.sum rămâne incomplet (missing go.sum entry).
  • go mod tidy fără acces la internet pentru un import nou: nu poate descărca modulul și dă eroare.
  • Uitarea lui go.sum la commit: colegii primesc erori de verificare.

Comenzi înrudite

  • go get: Adaugă, actualizează sau elimină dependențe în go.mod; descarcă modulele necesare.
  • go mod init: Creează fișierul go.mod în directorul curent și transformă directorul într-un modul Go.
  • module și pachete: Un pachet este un director cu fișiere .go; un modul (go.mod) este un proiect cu mai multe pachete și dependențele lor.
  • go list: Listează pachete sau module și informații despre ele (fișiere, importuri, versiuni), în text sau JSON.