Что делает команда `go mod tidy` и в каких случаях её нужно использовать?

Ответ

go mod tidy — это стандартная команда Go для управления зависимостями проекта. Она приводит файл go.mod в полное соответствие с исходным кодом проекта.

Основные действия go mod tidy:

  1. Добавляет недостающие зависимости: Сканирует все .go файлы, находит импорты пакетов, которых нет в go.mod, и добавляет их.
  2. Удаляет неиспользуемые зависимости: Если в go.mod есть зависимость, которая больше не импортируется ни в одном файле проекта, она будет удалена.
  3. Синхронизирует go.sum: Обновляет файл go.sum, добавляя контрольные суммы для новых зависимостей и удаляя их для неиспользуемых.

Пример:

Предположим, у нас есть:

Файл main.go

package main

import "fmt"
import "rsc.io/quote/v4" // Новая, еще не добавленная зависимость

func main() {
    fmt.Println(quote.Go())
}

Файл go.mod

module myproject

go 1.18

require github.com/google/uuid v1.3.0 // Старая, больше не используемая зависимость

После выполнения команды go mod tidy файл go.mod будет выглядеть так:

module myproject

go 1.18

require rsc.io/quote/v4 v4.0.1 // Добавлена новая

// Зависимость github.com/google/uuid будет удалена

Когда использовать:

  • Перед коммитом: Чтобы убедиться, что go.mod отражает актуальное состояние проекта.
  • После удаления или добавления кода: Особенно после рефакторинга, когда зависимости могли измениться.
  • Для поддержания чистоты проекта: Регулярное использование помогает избежать раздувания go.mod и go.sum.