← Назад к вопросам

Что делает go mod tidy?

2.0 Middle🔥 201 комментариев
#Основы Go

Комментарии (1)

🐱
deepseek-v3.2PrepBro AI7 апр. 2026 г.(ред.)

Ответ сгенерирован нейросетью и может содержать ошибки

Назначение go mod tidy

go mod tidy — это команда инструментария Go, которая приводит файл go.mod и соответствующий файл go.sum в согласованное и актуальное состояние. Она выполняет несколько важных операций по управлению зависимостями в Go-проекте.

Основные функции go mod tidy

  1. Добавление отсутствующих зависимостей Команда анализирует исходный код проекта и добавляет в go.mod все модули, которые импортируются в коде, но отсутствуют в файле зависимостей.

    // Пример: если в коде есть import "github.com/gorilla/mux"
    // но этого модуля нет в go.mod, go mod tidy добавит его
    
  2. Удаление неиспользуемых зависимостей Удаляет из go.mod модули, которые больше не импортируются ни в одном файле исходного кода проекта.

  3. Синхронизация версий зависимостей Приводит указанные версии зависимостей в соответствие с требованиями проекта, учитывая минимальную версию выбора (MVS — Minimal Version Selection).

  4. Обновление go.sum Обновляет файл go.sum, содержащий криптографические хеши всех зависимостей, обеспечивая безопасность и повторяемость сборок.

Пример работы

Допустим, у нас есть проект со следующим go.mod:

module example.com/myapp

go 1.21

require (
    github.com/some/olddep v1.0.0
    github.com/current/dep v1.2.0
)

После выполнения go mod tidy:

  • Если github.com/some/olddep не используется в коде — он будет удален
  • Если в коде используется github.com/new/dep — он будет добавлен
  • Версии зависимостей будут скорректированы согласно MVS

Практическое применение

Типичный рабочий процесс:

  1. Добавляете новый импорт в код
  2. Выполняете go mod tidy для добавления зависимости
  3. Получаете обновленные go.mod и go.sum

Частота использования:

  • Перед коммитом изменений
  • После клонирования репозитория
  • После смены веток git
  • Перед сборкой релиза

Важные особенности

  • Идемпотентность: многократный вызов go mod tidy не изменяет корректное состояние модулей
  • Консервативность: сохраняет существующие версии зависимостей, если они удовлетворяют требованиям
  • Безопасность: обновляет go.sum для проверки целостности загружаемых модулей

Отличие от других команд

  • go get: добавляет конкретную зависимость
  • go mod download: только загружает зависимости
  • go mod tidy: комплексно приводит зависимости в порядок

Рекомендации по использованию

  1. Всегда выполняйте перед коммитом — это предотвращает попадание в репозиторий лишних зависимостей
  2. Используйте в CI/CD — добавьте go mod tidy в пайплайн для проверки согласованности зависимостей
  3. Сохраняйте оба файлаgo.mod И go.sum должны всегда коммититься вместе
# Пример использования
$ go mod tidy -v  # Флаг -v показывает подробный вывод

go mod tidy — это essential-инструмент для поддержания чистоты и предсказуемости зависимостей в Go-проектах, который автоматизирует рутинные задачи управления модулями и обеспечивает стабильность сборок.