Sådan rydder du Swift Package Manager-cachen sikkert
AskClean-teamet · Opdateret 2026-11-02
Brug swift package clean til build-artefakterne i ét projekt, swift package reset til pakkens samlede cache og build-mappe og swift package purge-cache kun til SwiftPM's delte repositorycache. Behold Package.swift og Package.resolved: De definerer afhængighederne og skal ikke slettes som cache.

SwiftPM har flere cachelag
En kommandolinjepakke har normalt en .build-mappe med checkouts, repositories, build-output og workspace-tilstand. SwiftPM har desuden en delt repositorycache, så flere projekter ikke skal hente de samme afhængigheder hver gang, og for apps i Xcode ender pakkernes checkouts og build-produkter typisk i projektets DerivedData. Ryd det smalleste lag, der forklarer problemet — en oprydning i ét projekt er hurtigere at komme sig over og gør ikke andre repositories langsommere.
Vælg kommando efter omfang
swift package clean sletter pakkens build-artefakter og er førstevalget ved forældet kompileret output, uforklarlig linker-adfærd eller en oprydning, der kun skal gælde ét repository. swift package reset nulstiller pakkens samlede cache og build-mappe, så afhængigheder og workspace-tilstand skal forberedes igen. swift package purge-cache tømmer SwiftPM's globale repositorycache, som flere projekter deler; næste gang afhængighederne skal fastlægges og bygges, kan det derfor kræve netværk og tage længere tid i flere repositories.
- Commit eller stash dine ændringer, og kontroller, at Package.swift og Package.resolved ligger, hvor projektet forventer.
- Kør swift package clean i pakkens rod, og prøv det oprindelige build igen.
- Er pakkens lokale workspace stadig inkonsistent, så kør swift package reset, og lad derefter afhængighederne blive fastlagt og bygget igen.
- Kør kun swift package purge-cache, hvis den delte repositorycache er unormalt stor eller beskadiget.
- Kontroller afhængighedsgrafen og buildet, før du rydder Xcode-specifik DerivedData.
Hvilke underkommandoer der findes, afhænger af den installerede Swift-værktøjskæde. Kør swift package --help for at se, hvad din Mac understøtter.
Behold Package.resolved
Package.resolved registrerer, præcis hvilke afhængighedsversioner der blev valgt. Sletter du filen, kan næste fastlæggelse vælge andre versioner, som Package.swift tillader, og så bliver oprydningen i praksis en opgradering. Slet den kun, når du bevidst vil have versionerne fastlagt på ny. Package.swift, Sources, Tests, plugins og lokale afhængigheder er kildefiler, ikke cache: Genereret .build-indhold kommer igen, men det, du selv har skrevet, gør ikke.
Håndter Swift-pakker i Xcode separat
Ved problemer, der kun viser sig i Xcode, så start med File > Packages > Reset Package Caches og derefter File > Packages > Resolve Package Versions; menunavnene kan variere mellem Xcode-versioner. Hænger problemet sammen med kompilerede pakkeartefakter, så slet kun det pågældende projekts DerivedData — ikke hele DerivedData-mappen. Gem den oprindelige fejlmeddelelse først: Godkendelsesfejl, utilgængelige Git-værter og ændrede checksummer forsvinder ikke, fordi downloads slettes. AskClean viser kategorierne omkring SwiftPM, f.eks. DerivedData og store mapper, men det er Swift-kommandoerne, der afgør cachens omfang.
Overblik over beslutninger og risici
Ryd Swift Package Manager-cachen (SPM) sikkert: hvornår du skal bruge swift package clean, reset eller purge-cache, og hvordan du bevarer Package.resolved.
| Element | Her tjekker du | Konsekvens og grænser |
|---|---|---|
| SwiftPM har flere cachelag | .build / DerivedData / repositorycache | En kommandolinjepakke har normalt en .build-mappe med checkouts, repositories, build-output og workspace-tilstand. |
| Vælg kommando efter omfang | swift package clean / reset / purge-cache | swift package clean sletter pakkens build-artefakter og er førstevalget ved forældet kompileret output, uforklarlig linker-adfærd eller en oprydning, der kun skal gælde ét repository. |
| Behold Package.resolved | Package.swift / Package.resolved | Package.resolved registrerer, præcis hvilke afhængighedsversioner der blev valgt. |
| Håndter Swift-pakker i Xcode separat | File > Packages / DerivedData | Ved problemer, der kun viser sig i Xcode, så start med File > Packages > Reset Package Caches og derefter File > Packages > Resolve Package Versions; menunavnene kan variere mellem Xcode-versioner. |
FAQ
Hvad sletter swift package clean?
Build-artefakterne for den aktuelle pakke. Package.swift slettes ikke, og afhængighedskravene opdateres ikke; næste build genskaber outputtet.
Hvad er forskellen på reset og purge-cache?
reset gælder den aktuelle pakkes samlede cache og build-mappe. purge-cache gælder SwiftPM's delte, globale repositorycache og påvirker fremtidige downloads af afhængigheder i alle projekter.
Skal jeg slette Package.resolved?
Ikke ved almindelig oprydning. Filen registrerer de valgte afhængighedsversioner, og sletter du den, kan der blive valgt andre versioner næste gang. Fjern den kun, når en ny fastlæggelse af versionerne er selve målet.
Kilder