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