AskCleanAskClean

Sådan rydder du Swift Package Manager-cachen sikkert

AskClean-teamet · Opdateret 2026-07-31

Brug swift package clean til buildartefakter i den aktuelle pakke, reset til at nulstille hele dens lokale tilstand og swift package purge-cache kun til den globale repositorycache. Behold Package.swift og Package.resolved: de definerer afhængigheder og er ikke engangscache.

Swift-afhængighedsgraf adskilt fra duplikerede cachelag
Ryd lokale pakkeartefakter først, og purge kun delte downloads, når de er årsagen.

SwiftPM har flere lag

En kommandolinjepakke gemmer checkouts og produkter i .build, mens SwiftPM vedligeholder en delt repositorycache. Xcode kan gemme pakkeprodukter i projektets DerivedData. Ryd det smalleste lag, som forklarer problemet.

Vælg kommando efter omfang

swift package clean fjerner buildartefakter for den aktuelle pakke. reset går bredere og forbereder dens lokale tilstand igen. purge-cache påvirker downloads delt af flere projekter, så næste løsning kan kræve netværk og længere tid.

  1. Gem ændringer, og kontrollér Package.swift og Package.resolved.
  2. Kør swift package clean i roden, og byg igen.
  3. Brug kun swift package reset, hvis lokal tilstand stadig er beskadiget.
  4. Brug kun swift package purge-cache ved et bekræftet problem med delt cache.
  5. Kontrollér afhængigheder og test efter oprydning.

Kør swift package --help; tilgængelige underkommandoer afhænger af den installerede Swift-version.

Behold løsningsfiler

Package.resolved registrerer bestemte versioner. Hvis den slettes, kan andre tilladte versioner vælges, så en oprydning bliver en opdatering. Package.swift, Sources, Tests, plugins og lokale afhængigheder er kildefiler, ikke cache.

Håndter Xcode separat

Ved et problem kun i Xcode kan du prøve File > Packages > Reset Package Caches og Resolve Package Versions eller slette projektets DerivedData. Mål .build-mapper før global purge. AskClean finder kategorien, men Swift-kommandoerne fastlægger omfanget.

FAQ

Hvad sletter swift package clean?

Buildartefakter i den aktuelle pakke; næste build opretter dem igen.

Er reset og purge-cache det samme?

Nej. reset gælder den aktuelle pakke, purge-cache den globale repositorycache.

Skal Package.resolved slettes?

Ikke ved almindelig oprydning. Gør det kun ved en bevidst ny versionsløsning.

Kilder

Flere vejledninger om udviklerlager