Jak bezpiecznie wyczyścić pamięć podręczną Swift Package Manager
Zespół AskClean · Zaktualizowano 2026-11-02
Użyj swift package clean, aby usunąć artefakty kompilacji jednego projektu, swift package reset — aby wyczyścić całą pamięć podręczną i katalog kompilacji tego pakietu, a swift package purge-cache — tylko dla wspólnej pamięci podręcznej repozytoriów SwiftPM. Zachowaj Package.swift i Package.resolved: definiują zależności i nie są pamięcią podręczną do usunięcia.

SwiftPM ma kilka warstw pamięci podręcznej
Pakiet budowany z wiersza poleceń trzyma kopie zależności (checkouts), repozytoria, wyniki kompilacji i stan workspace’u w katalogu .build. SwiftPM utrzymuje też wspólną pamięć podręczną repozytoriów, żeby wiele projektów nie pobierało tych samych zależności z sieci. Xcode dokłada kolejną warstwę: w aplikacjach korzystających z pakietów Swift ich kopie i produkty kompilacji zwykle trafiają do DerivedData projektu. Czyść najwęższą warstwę, która wyjaśnia problem — po takim czyszczeniu szybciej wrócisz do pracy, częściej obejdziesz się bez sieci i nie spowolnisz innych repozytoriów.
Dobierz polecenie do zakresu
swift package clean usuwa artefakty kompilacji bieżącego pakietu — to pierwszy wybór przy nieaktualnych wynikach kompilacji albo czyszczeniu jednego repozytorium. Polecenie swift package reset resetuje całą pamięć podręczną i katalog kompilacji pakietu, więc zależności i stan workspace’u trzeba przygotować od nowa; użyj go, gdy clean nie pomógł. Z kolei swift package purge-cache czyści globalną pamięć podręczną repozytoriów wspólną dla wielu projektów, więc następne rozwiązywanie zależności może wymagać sieci i potrwać dłużej — to narzędzie na naprawdę przerośniętą lub uszkodzoną pamięć, a nie rutynowe porządki.
- Zatwierdź (commit) lub odłóż (stash) zmiany w kodzie i upewnij się, że Package.swift i Package.resolved są tam, gdzie oczekuje ich projekt.
- W katalogu głównym pakietu uruchom swift package clean i ponów pierwotną kompilację.
- Jeśli lokalny workspace pakietu nadal jest niespójny, uruchom swift package reset, a potem ponownie rozwiąż zależności i skompiluj.
- swift package purge-cache uruchamiaj tylko wtedy, gdy wspólna pamięć podręczna repozytoriów jest przerośnięta lub uszkodzona.
- Sprawdź graf zależności i kompilację, zanim zaczniesz czyścić DerivedData w Xcodzie.
Dostępność poleceń zależy od zainstalowanego zestawu narzędzi Swift. Uruchom swift package --help, aby sprawdzić, które podpolecenia obsługuje ten Mac.
Zachowaj Package.resolved
Package.resolved zapisuje rozstrzygnięte wersje zależności — to stan projektu, a nie pamięć podręczna pobrań. Jego usunięcie pozwala przy kolejnym rozwiązywaniu wybrać inne wersje dozwolone przez Package.swift, a więc zmienia czyszczenie w aktualizację zależności; rób to tylko wtedy, gdy celowo chcesz rozwiązać je od nowa. Package.swift, Sources, Tests, wtyczki i lokalne zależności to źródła: wygenerowana zawartość .build wróci, a pliki napisane przez Ciebie — niekoniecznie.
Pakiety w Xcodzie czyść osobno
Jeśli problem dotyczy tylko Xcode’a, zacznij od File > Packages > Reset Package Caches, a potem użyj File > Packages > Resolve Package Versions; nazwy menu mogą się różnić między wersjami Xcode’a. Gdy winne są skompilowane artefakty pakietów, usuń tylko folder DerivedData tego projektu (Xcode Settings > Locations lub Finder), a nie cały katalog DerivedData. Przed globalnym czyszczeniem zmierz katalogi .build i wspólną pamięć podręczną; AskClean pomoże znaleźć kategorię, która zajmuje miejsce, ale zakres czyszczenia samego SwiftPM wyznaczają oficjalne polecenia Swift.
Porównanie decyzji i ryzyka
Bezpiecznie wyczyść pamięć podręczną Swift Package Manager (SPM): kiedy użyć swift package clean, reset lub purge-cache i jak zachować Package.resolved.
| Decyzja | Gdzie sprawdzić | Granica bezpieczeństwa |
|---|---|---|
| SwiftPM ma kilka warstw pamięci podręcznej | .build / DerivedData / pamięć podręczna repozytoriów | Pakiet budowany z wiersza poleceń trzyma kopie zależności (checkouts), repozytoria, wyniki kompilacji i stan workspace’u w katalogu .build. |
| Dobierz polecenie do zakresu | swift package clean / reset / purge-cache | swift package clean usuwa artefakty kompilacji bieżącego pakietu — to pierwszy wybór przy nieaktualnych wynikach kompilacji albo czyszczeniu jednego repozytorium. |
| Zachowaj Package.resolved | Package.swift / Package.resolved | Package.resolved zapisuje rozstrzygnięte wersje zależności — to stan projektu, a nie pamięć podręczna pobrań. |
| Pakiety w Xcodzie czyść osobno | File > Packages / DerivedData | Jeśli problem dotyczy tylko Xcode’a, zacznij od File > Packages > Reset Package Caches, a potem użyj File > Packages > Resolve Package Versions; nazwy menu mogą się różnić między wersjami Xcode’a. |
FAQ
Co usuwa swift package clean?
Artefakty kompilacji bieżącego pakietu. Nie usuwa Package.swift i nie zmienia wymagań dotyczących zależności; następna kompilacja odtworzy wygenerowane pliki.
Czym różnią się reset i purge-cache?
reset dotyczy całej pamięci podręcznej i katalogu kompilacji bieżącego pakietu, a purge-cache czyści wspólną, globalną pamięć podręczną repozytoriów SwiftPM. Ten drugi ma szerszy wpływ: może spowolnić przyszłe pobieranie zależności we wszystkich projektach.
Czy usuwać Package.resolved?
Nie przy zwykłym czyszczeniu. Ten plik zapisuje rozstrzygnięte wersje zależności, a jego usunięcie może zmienić wersje wybrane następnym razem. Usuń go tylko wtedy, gdy celowo chcesz rozwiązać zależności od nowa.
Źródła