Så rensar du Swift Package Manager-cachen säkert
AskClean-teamet · Uppdaterad 2026-11-02
Använd swift package clean för ett pakets byggartefakter, swift package reset för paketets hela cache och byggmapp och swift package purge-cache bara för SwiftPM:s delade repository-cache. Behåll Package.swift och Package.resolved: de definierar beroendena och ska inte raderas som cache.

SwiftPM har flera cachelager
Ett kommandoradspaket har normalt en .build-mapp med checkouts, repositories, byggresultat och arbetsytans tillstånd. SwiftPM har dessutom en delad repository-cache så att flera projekt inte behöver hämta samma beroenden varje gång, och för appar i Xcode hamnar paketens checkouts och byggprodukter i projektets DerivedData. Rensa det smalaste lager som förklarar problemet – en rensning i ett enskilt projekt går snabbare att återställa och påverkar inte andra repositories.
Välj kommando efter omfattning
swift package clean tar bort paketets byggartefakter och är förstahandsvalet vid inaktuella kompileringsresultat eller när du bara vill frigöra utrymme i ett repository. swift package reset återställer paketets hela cache och byggmapp, så beroenden och arbetsytans tillstånd måste förberedas igen. swift package purge-cache tömmer den globala repository-cache som flera projekt delar; nästa beroendeupplösning kan kräva nätverk och ta längre tid i flera repositories.
- Checka in eller stasha ändringar och kontrollera att Package.swift och Package.resolved finns där projektet förväntar sig.
- Kör swift package clean i paketets rot och prova det ursprungliga bygget igen.
- Om paketets lokala arbetsyta fortfarande är inkonsekvent kör du swift package reset och bygger sedan igen, så att beroendena löses på nytt.
- Kör swift package purge-cache bara om den delade repository-cachen är onormalt stor eller skadad.
- Kontrollera beroendegrafen och bygget innan du rensar Xcode-specifik DerivedData.
Vilka underkommandon som finns beror på den installerade Swift-verktygskedjan. Kör swift package --help för att se vad som stöds på din Mac.
Behåll Package.resolved
Package.resolved registrerar exakt vilka beroendeversioner som valdes. Tar du bort filen kan nästa upplösning välja andra versioner som Package.swift tillåter, och rensningen blir i praktiken en uppgradering. Ta bara bort den när du medvetet vill att versionerna ska väljas på nytt. Package.swift, Sources, Tests, insticksprogram och lokala beroenden är källfiler, inte cache: genererat .build-innehåll kommer tillbaka, men det du själv har skrivit gör inte det.
Hantera Swift-paket i Xcode separat
Vid problem som bara syns i Xcode börjar du med File > Packages > Reset Package Caches och sedan File > Packages > Resolve Package Versions; menynamnen kan variera mellan Xcode-versioner. Hänger problemet ihop med kompilerade paketartefakter tar du bort just det projektets DerivedData, inte hela DerivedData-mappen. Spara det ursprungliga felmeddelandet först: autentiseringsfel, otillgängliga Git-värdar och ändrade checksummor försvinner inte för att hämtningar raderas. AskClean visar kategorierna runt SwiftPM, som DerivedData och stora mappar, men det är Swift-kommandona som avgör cachens omfattning.
Översikt över beslut och risker
Rensa Swift Package Manager-cachen (SPM) säkert: när du ska använda swift package clean, reset eller purge-cache och hur du behåller Package.resolved intakt.
| Moment | Var du kontrollerar | Gränser och följder |
|---|---|---|
| SwiftPM har flera cachelager | .build / DerivedData / repository-cache | Ett kommandoradspaket har normalt en .build-mapp med checkouts, repositories, byggresultat och arbetsytans tillstånd. |
| Välj kommando efter omfattning | swift package clean / reset / purge-cache | swift package clean tar bort paketets byggartefakter och är förstahandsvalet vid inaktuella kompileringsresultat eller när du bara vill frigöra utrymme i ett repository. |
| Behåll Package.resolved | Package.swift / Package.resolved | Package.resolved registrerar exakt vilka beroendeversioner som valdes. |
| Hantera Swift-paket i Xcode separat | File > Packages / DerivedData | Vid problem som bara syns i Xcode börjar du med File > Packages > Reset Package Caches och sedan File > Packages > Resolve Package Versions; menynamnen kan variera mellan Xcode-versioner. |
Vanliga frågor
Vad tar swift package clean bort?
Byggartefakter för det aktuella paketet. Package.swift påverkas inte och beroendekraven uppdateras inte; nästa bygge skapar resultaten igen.
Vad är skillnaden mellan reset och purge-cache?
reset gäller det aktuella paketets hela cache och byggmapp. purge-cache gäller SwiftPM:s delade, globala repository-cache och påverkar framtida hämtningar i alla projekt.
Ska jag radera Package.resolved?
Inte vid vanlig rensning. Filen registrerar valda beroendeversioner, och om den tas bort kan andra versioner väljas nästa gång. Radera den bara när målet är att beroendeversionerna ska väljas på nytt.
Källor