Як безпечно очистити кеш 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.
FAQ
Що видаляє swift package clean?
Артефакти збірки поточного пакета; наступна збірка створить їх знову.
reset і purge-cache однакові?
Ні. reset діє на поточний пакет, а purge-cache очищує глобальний кеш репозиторіїв.
Треба видаляти Package.resolved?
Не для звичайного очищення. Робіть це лише заради навмисно нового розв’язання версій.
Джерела