AskCleanAskClean

Як безпечно очистити кеш Swift Package Manager

Команда AskClean · Оновлено 2026-07-31

Використовуйте swift package clean для артефактів збірки поточного пакета, reset для повного скидання його локального стану, а swift package purge-cache — лише для глобального кешу репозиторіїв. Зберігайте Package.swift і Package.resolved: вони визначають залежності й не є одноразовим кешем.

Граф залежностей Swift відокремлено від дубльованих шарів кешу
Спочатку очищуйте локальні артефакти пакета, а спільні завантаження — лише коли проблема саме в них.

SwiftPM має кілька рівнів

Пакет командного рядка зберігає checkout і продукти в .build, а SwiftPM підтримує спільний кеш репозиторіїв. Xcode може зберігати продукти пакетів у DerivedData проєкту. Очищуйте найвужчий рівень, який пояснює проблему.

Вибирайте команду за охопленням

swift package clean видаляє артефакти збірки поточного пакета. reset діє ширше й відтворює локальний стан. purge-cache зачіпає завантаження багатьох проєктів, тому наступне розв’язання може потребувати мережі й більше часу.

  1. Збережіть зміни й перевірте Package.swift та Package.resolved.
  2. Запустіть swift package clean у корені й зберіть знову.
  3. Використовуйте swift package reset лише якщо локальний стан лишається пошкодженим.
  4. Використовуйте swift package purge-cache лише при підтвердженій проблемі спільного кешу.
  5. Перевірте залежності й тести після очищення.

Запустіть 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?

Не для звичайного очищення. Робіть це лише заради навмисно нового розв’язання версій.

Джерела

Інші посібники зі сховища для розробників