AskCleanAskClean

Jak bezpečně vyčistit mezipaměť Swift Package Manageru

Tým AskClean · Aktualizováno 2026-07-31

Použijte swift package clean pro artefakty sestavení aktuálního balíčku, reset pro úplnou obnovu jeho místního stavu a swift package purge-cache jen pro globální mezipaměť repozitářů. Package.swift a Package.resolved ponechte: určují závislosti a nejsou zahoditelnou mezipamětí.

Graf závislostí Swift oddělený od duplicitních vrstev mezipaměti
Nejprve čistěte místní artefakty balíčku, sdílená stahování jen tehdy, když způsobují problém.

SwiftPM má více vrstev

Balíček příkazové řádky ukládá checkouty a produkty do .build, zatímco SwiftPM udržuje sdílenou mezipaměť repozitářů. Xcode může produkty balíčků uchovávat v DerivedData projektu. Čistěte nejužší vrstvu, která problém vysvětluje.

Příkaz vybírejte podle rozsahu

swift package clean odstraní artefakty sestavení aktuálního balíčku. reset je širší a obnoví jeho místní stav. purge-cache ovlivní stahování sdílené více projekty, takže další řešení závislostí může vyžadovat síť a více času.

  1. Uložte změny a ověřte Package.swift a Package.resolved.
  2. V kořeni spusťte swift package clean a sestavte znovu.
  3. swift package reset použijte jen při trvale poškozeném místním stavu.
  4. swift package purge-cache použijte jen při potvrzeném problému sdílené mezipaměti.
  5. Po čištění ověřte závislosti a testy.

Spusťte swift package --help; dostupné podpříkazy závisí na nainstalované verzi Swift.

Zachovejte soubory řešení

Package.resolved zapisuje konkrétní verze. Jeho smazání může vybrat jiné povolené verze a změnit úklid na aktualizaci. Package.swift, Sources, Tests, pluginy a místní závislosti jsou zdrojové soubory; nemažte je jako mezipaměť.

Xcode řešte samostatně

U problému pouze v Xcode zkuste File > Packages > Reset Package Caches a Resolve Package Versions nebo smažte DerivedData daného projektu. Před globálním čištěním změřte složky .build. AskClean najde kategorii, rozsah však určují příkazy Swift.

Časté dotazy

Co smaže swift package clean?

Artefakty sestavení aktuálního balíčku; příští sestavení je vytvoří znovu.

Jsou reset a purge-cache stejné?

Ne. reset se týká aktuálního balíčku, purge-cache globální mezipaměti repozitářů.

Mám smazat Package.resolved?

Při běžném čištění ne. Udělejte to jen při záměrně novém řešení verzí.

Zdroje

Další návody k úložišti pro vývojáře