Как безопасно очистить кэш Swift Package Manager
Команда AskClean · Обновлено 2026-07-31
Используйте swift package clean для артефактов сборки текущего пакета, reset для полного сброса его локального состояния, а swift package purge-cache — только для глобального кэша репозиториев. Сохраняйте Package.swift и Package.resolved: они определяют зависимости и не являются одноразовым кэшем.

У SwiftPM несколько уровней
Пакет командной строки хранит checkout и продукты в .build, а SwiftPM поддерживает общий кэш репозиториев. Xcode может хранить продукты пакетов в DerivedData проекта. Очищайте самый узкий уровень, который объясняет проблему.
Выбирайте команду по области действия
swift package clean удаляет артефакты сборки текущего пакета. reset действует шире и пересоздаёт его локальное состояние. purge-cache затрагивает загрузки нескольких проектов, поэтому следующему разрешению зависимостей могут понадобиться сеть и дополнительное время.
- Сохраните изменения и проверьте Package.swift и Package.resolved.
- Запустите swift package clean в корне и соберите проект снова.
- Используйте swift package reset лишь при сохраняющемся повреждении локального состояния.
- Используйте swift package purge-cache только при подтверждённой проблеме общего кэша.
- Проверьте граф зависимостей и тесты после очистки.
Запустите swift package --help: доступные подкоманды зависят от установленной версии Swift.
Сохраняйте файлы разрешения
Package.resolved фиксирует конкретные версии. Его удаление может выбрать другие допустимые версии и превратить очистку в обновление. Package.swift, Sources, Tests, плагины и локальные зависимости — исходники, их нельзя удалять как кэш.
Обрабатывайте Xcode отдельно
Если проблема видна только в Xcode, попробуйте File > Packages > Reset Package Caches и Resolve Package Versions либо удалите DerivedData конкретного проекта. Измерьте папки .build до глобальной очистки. AskClean находит категорию, но область задают команды Swift.
Частые вопросы
Что удаляет swift package clean?
Артефакты сборки текущего пакета; следующая сборка создаст их заново.
reset и purge-cache одинаковы?
Нет. reset действует на текущий пакет, а purge-cache очищает глобальный кэш репозиториев.
Нужно удалить Package.resolved?
Не для обычной очистки. Делайте это только при намеренном новом разрешении версий.
Источники