Come svuotare la cache di Swift Package Manager in sicurezza
Team AskClean · Aggiornato 2026-11-02
Usa swift package clean per gli artefatti di build di un progetto, swift package reset per azzerare tutta la cache e la cartella di build di quel pacchetto e swift package purge-cache per la cache condivisa dei repository di SwiftPM. Conserva Package.swift e Package.resolved: definiscono le dipendenze e non vanno eliminati come se fossero cache.

SwiftPM ha più di una cache
SwiftPM conserva dati rigenerabili a livelli diversi. Un pacchetto da riga di comando ha di solito una cartella .build con checkout, repository, output di build e stato del workspace; SwiftPM mantiene inoltre una cache condivisa dei repository, così più progetti non devono scaricare ogni volta le stesse dipendenze. Xcode aggiunge un altro livello: checkout e prodotti dei pacchetti di un’app finiscono di solito nel DerivedData del progetto. Pulisci il livello più ristretto che spiega il problema: una pulizia di progetto si recupera più in fretta e non rallenta gli altri repository.
Scegli il comando in base all’ambito
swift package clean elimina gli artefatti di build del pacchetto: è la prima scelta per un output compilato non aggiornato o per liberare spazio in un solo repository. swift package reset azzera tutta la cache e la cartella di build del pacchetto, quindi dipendenze e stato del workspace andranno preparati di nuovo: usalo se clean non è bastato. swift package purge-cache svuota la cache globale dei repository condivisa da più progetti: la risoluzione o la build successiva potrebbe richiedere la rete e più tempo in tutti i repository.
- Fai commit o stash delle modifiche e verifica che Package.swift e Package.resolved siano dove il progetto se li aspetta.
- Dalla radice del pacchetto esegui swift package clean e riprova la build originale.
- Se il workspace locale del pacchetto resta incoerente, esegui swift package reset, poi risolvi le dipendenze e compila di nuovo.
- Esegui swift package purge-cache solo se la cache condivisa dei repository è davvero eccessiva o danneggiata.
- Verifica grafo delle dipendenze, build e test prima di pulire qualsiasi DerivedData di Xcode.
La disponibilità dei comandi dipende dalla toolchain Swift installata: esegui swift package --help per verificare i sottocomandi supportati su quel Mac.
Conserva Package.resolved e i sorgenti
Package.resolved registra lo stato della risoluzione delle dipendenze: non è una cache di download da buttare. Per le app, tenerlo sotto controllo di versione fa sì che colleghi e CI usino le stesse versioni; eliminarlo permette a una risoluzione futura di scegliere versioni diverse consentite da Package.swift e trasforma una pulizia in un aggiornamento. Package.swift, Sources, Tests, plugin e dipendenze con percorso locale sono sorgenti: il contenuto generato in .build si ricrea, i file che hai scritto tu potrebbero non tornare.
Gestisci a parte i pacchetti usati da Xcode
Per una dipendenza usata da un progetto Xcode, parti da File > Packages > Reset Package Caches, se la tua versione di Xcode lo offre, poi usa File > Packages > Resolve Package Versions per ripristinare il grafo descritto dal progetto. Se il problema riguarda gli artefatti compilati, elimina solo il DerivedData di quel progetto, da Xcode Settings > Locations o dal Finder, non l’intera cartella DerivedData. Per lo spazio, misura le cartelle .build prima di una pulizia globale. AskClean ti aiuta a capire quale categoria occupa spazio intorno a SwiftPM e chiede conferma prima di eliminare, ma per l’ambito della cache di SwiftPM fanno fede i comandi ufficiali di Swift.
Decisioni e rischi in sintesi
Svuota in sicurezza la cache di Swift Package Manager (SPM): quando usare swift package clean, reset o purge-cache e come lasciare intatto Package.resolved.
| Decisione | Dove verificare | Limite di sicurezza |
|---|---|---|
| SwiftPM ha più di una cache | .build / DerivedData / cache dei repository | SwiftPM conserva dati rigenerabili a livelli diversi. |
| Scegli il comando in base all’ambito | swift package clean / reset / purge-cache | swift package clean elimina gli artefatti di build del pacchetto: è la prima scelta per un output compilato non aggiornato o per liberare spazio in un solo repository. |
| Conserva Package.resolved e i sorgenti | Package.swift / Package.resolved | Package.resolved registra lo stato della risoluzione delle dipendenze: non è una cache di download da buttare. |
| Gestisci a parte i pacchetti usati da Xcode | File > Packages / DerivedData | Per una dipendenza usata da un progetto Xcode, parti da File > Packages > Reset Package Caches, se la tua versione di Xcode lo offre, poi usa File > Packages > Resolve Package Versions per ripristinare il grafo descritto dal progetto. |
FAQ
Che cosa elimina swift package clean?
Gli artefatti di build del pacchetto corrente. Non elimina Package.swift e non aggiorna i requisiti delle dipendenze; la build successiva ricrea l’output generato.
Che differenza c’è tra reset e purge-cache?
reset agisce su tutta la cache e la cartella di build del pacchetto corrente; purge-cache svuota la cache globale dei repository di SwiftPM, con effetti sui download futuri di tutti i progetti.
Devo eliminare Package.resolved?
Non per una pulizia normale: registra le versioni risolte delle dipendenze, ed eliminarlo può cambiare le versioni scelte la volta successiva. Rimuovilo solo se vuoi deliberatamente una nuova risoluzione.
Fonti