Swift Package Manager -välimuistin turvallinen tyhjentäminen
AskClean-tiimi · Päivitetty 2026-11-02
Käytä komentoa swift package clean yhden projektin käännösartefakteille, swift package reset -komentoa paketin koko välimuistin ja käännöshakemiston nollaamiseen ja swift package purge-cache -komentoa SwiftPM:n jaetulle repositoriovälimuistille. Säilytä Package.swift ja Package.resolved: ne määrittävät riippuvuudet, eikä niitä pidä poistaa välimuistina.

SwiftPM:llä on useita välimuistikerroksia
Komentorivipaketin .build-kansiossa ovat checkoutit, repositoriot, käännöstulokset ja työtilan tilatiedot, ja lisäksi SwiftPM ylläpitää jaettua repositoriovälimuistia, jotta projektien ei tarvitse ladata samoja riippuvuuksia joka kerta verkosta. Xcodessa pakettien checkoutit ja käännöstuotteet liittyvät yleensä projektin DerivedDataan. Tyhjennä suppein kerros, joka selittää ongelman.
Valitse komento laajuuden mukaan
swift package clean poistaa paketin käännösartefaktit, ja se on ensimmäinen valinta vanhentuneille käännöstuloksille. swift package reset nollaa paketin koko välimuistin ja käännöshakemiston, joten riippuvuudet ja työtilan tila valmistellaan uudelleen. swift package purge-cache tyhjentää SwiftPM:n globaalin repositoriovälimuistin, joka nopeuttaa latauksia kaikissa projekteissa, joten seuraava riippuvuuksien ratkaisu voi vaatia verkkoyhteyden ja kestää pidempään useissa repositorioissa.
- Commitoi tai tallenna (stash) muutoksesi ja varmista, että Package.swift ja Package.resolved ovat paikallaan.
- Aja paketin juuressa swift package clean ja käännä uudelleen.
- Jos paketin paikallinen työtila on yhä epäjohdonmukainen, aja swift package reset, ratkaise riippuvuudet ja käännä uudelleen.
- Aja swift package purge-cache vain, jos jaettu repositoriovälimuisti on kasvanut liian suureksi tai vioittunut.
- Tarkista riippuvuusgraafi ja käännös ennen kuin siivoat Xcoden DerivedDataa.
Käytettävissä olevat alikomennot riippuvat asennetusta Swift-työkaluketjusta. Tarkista ne komennolla swift package --help.
Säilytä ratkaisutiedostot
Package.resolved tallentaa ratkaistut riippuvuusversiot. Jos poistat sen, seuraava ratkaisu voi valita muita Package.swiftin sallimia versioita, ja siivous muuttuu huomaamatta riippuvuuspäivitykseksi. Package.swift, Sources, Tests, liitännäiset (plugins) ja paikalliset polkuriippuvuudet ovat lähdetiedostoja, eivät välimuistia: luodun .build-sisällön voi luoda uudelleen, itse kirjoitettuja tiedostoja ei välttämättä.
Käsittele Xcode erikseen
Jos ongelma näkyy vain Xcodessa, kokeile File > Packages > Reset Package Caches ja sitten Resolve Package Versions tai poista vain kyseisen projektin DerivedData. Mittaa .build-kansiot ennen globaalia tyhjennystä, äläkä tee purge-cache-komennosta rutiinia ennen jokaista käännöstä. AskClean löytää SwiftPM:ää ympäröivät tallennusluokat ja kysyy ennen poistamista, mutta välimuistin laajuuden määräävät Swiftin omat komennot.
Päätösten ja riskien vertailu
Tyhjennä Swift Package Manager -välimuisti turvallisesti: milloin käyttää swift package clean, reset tai purge-cache ja miksi Package.resolved säilytetään.
| Päätös | Mistä tarkistaa | Turvallisuusraja |
|---|---|---|
| SwiftPM:llä on useita välimuistikerroksia | .build / DerivedData / repositoriovälimuisti | Komentorivipaketin .build-kansiossa ovat checkoutit, repositoriot, käännöstulokset ja työtilan tilatiedot, ja lisäksi SwiftPM ylläpitää jaettua repositoriovälimuistia, jotta projektien ei tarvitse ladata samoja riippuvuuksia joka kerta verkosta. |
| Valitse komento laajuuden mukaan | swift package clean / reset / purge-cache | swift package clean poistaa paketin käännösartefaktit, ja se on ensimmäinen valinta vanhentuneille käännöstuloksille. |
| Säilytä ratkaisutiedostot | Package.swift / Package.resolved | Package.resolved tallentaa ratkaistut riippuvuusversiot. |
| Käsittele Xcode erikseen | File > Packages / DerivedData | Jos ongelma näkyy vain Xcodessa, kokeile File > Packages > Reset Package Caches ja sitten Resolve Package Versions tai poista vain kyseisen projektin DerivedData. |
UKK
Mitä swift package clean poistaa?
Nykyisen paketin käännösartefaktit. Se ei poista Package.swiftiä eikä päivitä riippuvuusvaatimuksia; seuraava käännös luo tulokset uudelleen.
Mitä eroa on komennoilla reset ja purge-cache?
reset koskee nykyisen paketin koko välimuistia ja käännöshakemistoa, purge-cache SwiftPM:n jaettua globaalia repositoriovälimuistia. Jälkimmäinen vaikuttaa laajemmin, koska kaikki projektit joutuvat lataamaan riippuvuutensa uudelleen.
Pitäisikö Package.resolved poistaa?
Ei tavallisessa siivouksessa. Se tallentaa ratkaistut versiot, ja sen poistaminen voi muuttaa seuraavalla kerralla valittavia versioita. Poista se vain, kun haluat tarkoituksella uuden versioratkaisun.
Lähteet