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.

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.
- 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á.
- V kořeni balíčku spusťte swift package clean a zkuste původní sestavení znovu.
- Pokud je místní workspace balíčku stále nekonzistentní, spusťte swift package reset a závislosti znovu vyřešte a sestavte.
- swift package purge-cache spusťte jen tehdy, když je sdílená mezipaměť repozitářů přerostlá nebo poškozená.
- 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éma | Kde zkontrolovat | Bezpeč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 rozsahu | swift package clean / reset / purge-cache | swift package clean odstraní artefakty sestavení aktuálního balíčku a je první volbou. |
| Package.resolved ponechte | Package.swift / Package.resolved | Package.resolved zaznamenává konkrétní vyřešené verze závislostí. |
| Balíčky v Xcode řešte zvlášť | File > Packages / DerivedData | 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. |
Č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