AskClean

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.

Graf zależności z aktywnymi pakietami Swift oddzielonymi od zdublowanych warstw pamięci podręcznej
Wybieraj najwęższe czyszczenie SwiftPM: najpierw artefakty kompilacji projektu, a wspólne pobrania tylko wtedy, gdy to one są problemem.

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.

  1. Zatwierdź (commit) lub odłóż (stash) zmiany w kodzie i upewnij się, że Package.swift i Package.resolved są tam, gdzie oczekuje ich projekt.
  2. W katalogu głównym pakietu uruchom swift package clean i ponów pierwotną kompilację.
  3. Jeśli lokalny workspace pakietu nadal jest niespójny, uruchom swift package reset, a potem ponownie rozwiąż zależności i skompiluj.
  4. swift package purge-cache uruchamiaj tylko wtedy, gdy wspólna pamięć podręczna repozytoriów jest przerośnięta lub uszkodzona.
  5. 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.

DecyzjaGdzie sprawdzićGranica bezpieczeństwa
SwiftPM ma kilka warstw pamięci podręcznej.build / DerivedData / pamięć podręczna repozytoriówPakiet budowany z wiersza poleceń trzyma kopie zależności (checkouts), repozytoria, wyniki kompilacji i stan workspace’u w katalogu .build.
Dobierz polecenie do zakresuswift package clean / reset / purge-cacheswift package clean usuwa artefakty kompilacji bieżącego pakietu — to pierwszy wybór przy nieaktualnych wynikach kompilacji albo czyszczeniu jednego repozytorium.
Zachowaj Package.resolvedPackage.swift / Package.resolvedPackage.resolved zapisuje rozstrzygnięte wersje zależności — to stan projektu, a nie pamięć podręczna pobrań.
Pakiety w Xcodzie czyść osobnoFile > Packages / DerivedDataJeś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

Więcej poradników o danych deweloperskich