AskClean

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

Tým AskClean · Aktualizováno 2026-11-02

Pro artefakty sestavení jednoho projektu použijte swift package clean, pro úplnou mezipaměť sestavení tohoto balíčku swift package reset a pro sdílenou mezipaměť repozitářů, kterou SwiftPM používá napříč projekty, příkaz swift package purge-cache. Package.swift a Package.resolved ponechte: určují závislosti a nejsou mezipamětí, kterou lze smazat.

Izometrický graf závislostí s aktivními balíčky Swift oddělenými od duplicitních vrstev mezipaměti
Volte nejužší úklid SwiftPM: nejdřív artefakty sestavení projektu, sdílená stažení jen tehdy, když jsou příčinou problému.

SwiftPM nemá jen jednu mezipaměť

Balíček sestavovaný z příkazové řádky ukládá checkouty, repozitáře, výstupy sestavení a stav workspace do složky .build. SwiftPM navíc udržuje sdílenou mezipaměť repozitářů, aby projekty nemusely stejné závislosti pokaždé stahovat. Xcode může checkouty a produkty balíčků ukládat do DerivedData projektu. Čistěte vždy nejužší vrstvu, která problém vysvětluje.

Příkaz vybírejte podle rozsahu

swift package clean odstraní artefakty sestavení aktuálního balíčku a je první volbou. swift package reset resetuje celou mezipaměť a složku sestavení balíčku, takže se závislosti a stav workspace musí připravit znovu. swift package purge-cache vyprázdní globální mezipaměť repozitářů sdílenou více projekty; další řešení závislostí pak může potřebovat síť a víc času.

  1. Změny commitněte nebo odložte přes git stash a ověřte, že Package.swift a Package.resolved jsou tam, kde je projekt očekává.
  2. V kořeni balíčku spusťte swift package clean a zkuste původní sestavení znovu.
  3. Pokud je místní workspace balíčku stále nekonzistentní, spusťte swift package reset a závislosti znovu vyřešte a sestavte.
  4. swift package purge-cache spusťte jen tehdy, když je sdílená mezipaměť repozitářů přerostlá nebo poškozená.
  5. Než začnete čistit DerivedData v Xcode, ověřte graf závislostí a sestavení.

Dostupné podpříkazy závisí na nainstalované sadě nástrojů Swift; ověřte je příkazem swift package --help.

Package.resolved ponechte

Package.resolved zaznamenává konkrétní vyřešené verze závislostí. Po jeho smazání může další řešení vybrat jiné verze povolené v Package.swift a z úklidu se nenápadně stane aktualizace závislostí. Package.swift, Sources, Tests, pluginy a místní závislosti jsou zdrojové soubory, ne mezipaměť – nemažte je.

Balíčky v Xcode řešte zvlášť

Pokud se problém projevuje jen v Xcode, zkuste File > Packages > Reset Package Caches a potom Resolve Package Versions, případně smažte DerivedData jen tohoto projektu. Před globálním čištěním změřte složky .build; opuštěné klony bývají lepším cílem než sdílená mezipaměť, která zrychluje aktivní práci. AskClean pomůže najít, která okolní kategorie zabírá místo, rozsah mezipaměti SwiftPM však určují oficiální příkazy Swift.

Přehled rozhodnutí a rizik

Jak bezpečně vyčistit mezipaměť Swift Package Manageru (SPM): kdy použít swift package clean, reset nebo purge-cache a jak zachovat Package.resolved.

TémaKde zkontrolovatBezpečnostní hranice
SwiftPM nemá jen jednu mezipaměť.build / DerivedData / mezipaměť repozitářůBalíček sestavovaný z příkazové řádky ukládá checkouty, repozitáře, výstupy sestavení a stav workspace do složky .build.
Příkaz vybírejte podle rozsahuswift package clean / reset / purge-cacheswift package clean odstraní artefakty sestavení aktuálního balíčku a je první volbou.
Package.resolved ponechtePackage.swift / Package.resolvedPackage.resolved zaznamenává konkrétní vyřešené verze závislostí.
Balíčky v Xcode řešte zvlášťFile > Packages / DerivedDataPokud se problém projevuje jen v Xcode, zkuste File > Packages > Reset Package Caches a potom Resolve Package Versions, případně smažte DerivedData jen tohoto projektu.

Časté dotazy

Co smaže swift package clean?

Artefakty sestavení aktuálního balíčku. Package.swift nesmaže a požadavky na závislosti nemění; příští sestavení výstupy vytvoří znovu.

Jaký je rozdíl mezi reset a purge-cache?

reset se týká celé mezipaměti a složky sestavení aktuálního balíčku, purge-cache sdílené globální mezipaměti repozitářů SwiftPM. Vyprázdnění globální mezipaměti ovlivní budoucí stahování závislostí ve všech projektech.

Mám smazat Package.resolved?

Při běžném úklidu ne. Soubor zaznamenává vyřešené verze závislostí a po jeho smazání se příště mohou vybrat jiné. Odstraňte ho jen tehdy, když záměrně chcete závislosti vyřešit znovu.

Zdroje

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