AskClean

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.

Grafo delle dipendenze in vista isometrica, con i cubi dei pacchetti Swift attivi separati dai livelli di cache duplicati
Scegli la pulizia di SwiftPM più mirata: prima gli artefatti di build del progetto, i download condivisi solo quando sono loro il problema.

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.

  1. Fai commit o stash delle modifiche e verifica che Package.swift e Package.resolved siano dove il progetto se li aspetta.
  2. Dalla radice del pacchetto esegui swift package clean e riprova la build originale.
  3. Se il workspace locale del pacchetto resta incoerente, esegui swift package reset, poi risolvi le dipendenze e compila di nuovo.
  4. Esegui swift package purge-cache solo se la cache condivisa dei repository è davvero eccessiva o danneggiata.
  5. 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.

DecisioneDove verificareLimite di sicurezza
SwiftPM ha più di una cache.build / DerivedData / cache dei repositorySwiftPM conserva dati rigenerabili a livelli diversi.
Scegli il comando in base all’ambitoswift package clean / reset / purge-cacheswift 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 sorgentiPackage.swift / Package.resolvedPackage.resolved registra lo stato della risoluzione delle dipendenze: non è una cache di download da buttare.
Gestisci a parte i pacchetti usati da XcodeFile > Packages / DerivedDataPer 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

Altre guide sullo spazio occupato dagli strumenti di sviluppo