AskClean

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.

Isometrinen riippuvuuskaavio, jossa aktiiviset Swift-paketit on erotettu päällekkäisistä välimuistikerroksista
Valitse suppein SwiftPM-siivous: ensin projektin käännösartefaktit, jaetut lataukset vasta, kun ongelma on niissä.

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.

  1. Commitoi tai tallenna (stash) muutoksesi ja varmista, että Package.swift ja Package.resolved ovat paikallaan.
  2. Aja paketin juuressa swift package clean ja käännä uudelleen.
  3. Jos paketin paikallinen työtila on yhä epäjohdonmukainen, aja swift package reset, ratkaise riippuvuudet ja käännä uudelleen.
  4. Aja swift package purge-cache vain, jos jaettu repositoriovälimuisti on kasvanut liian suureksi tai vioittunut.
  5. 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ösMistä tarkistaaTurvallisuusraja
SwiftPM:llä on useita välimuistikerroksia.build / DerivedData / repositoriovälimuistiKomentorivipaketin .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 mukaanswift package clean / reset / purge-cacheswift package clean poistaa paketin käännösartefaktit, ja se on ensimmäinen valinta vanhentuneille käännöstuloksille.
Säilytä ratkaisutiedostotPackage.swift / Package.resolvedPackage.resolved tallentaa ratkaistut riippuvuusversiot.
Käsittele Xcode erikseenFile > Packages / DerivedDataJos 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

Lisää oppaita kehittäjän tallennustilan hallintaan