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