Cara mengosongkan cache Swift Package Manager dengan selamat
Pasukan AskClean · Dikemas kini 2026-11-02
Gunakan swift package clean untuk artifak binaan satu projek, swift package reset untuk keseluruhan cache dan direktori binaan pakej itu, dan swift package purge-cache untuk cache repositori bersama SwiftPM. Simpan Package.swift dan Package.resolved: kedua-duanya menentukan kebergantungan dan tidak patut dipadam seperti cache.

SwiftPM mempunyai lebih daripada satu cache
SwiftPM menyimpan data yang boleh dijana semula pada beberapa skop yang berbeza. Pakej baris perintah lazimnya mempunyai direktori .build yang mengandungi checkout, repositori, output binaan dan keadaan ruang kerja, manakala SwiftPM juga mengekalkan cache repositori bersama supaya beberapa projek tidak perlu memuat turun kebergantungan yang sama berulang kali. Xcode menambah satu lagi lapisan: checkout dan produk binaan pakej lazimnya dikaitkan dengan DerivedData projek. Bersihkan lapisan paling sempit yang menerangkan simptom, dan jangan terus memadam setiap cache global hanya kerana satu binaan gagal: catat ralat asal dahulu, kerana masalah kelayakan, hos Git yang tidak tersedia atau manifes pakej yang tidak sah tidak akan selesai dengan membuang muat turun.
Pilih perintah mengikut skop
swift package clean memadam artifak binaan pakej semasa dan menjadi pilihan pertama bagi output terkompil yang lapuk atau pembersihan ruang dalam satu repositori. swift package reset menetapkan semula keseluruhan cache dan direktori binaan pakej itu, jadi kebergantungan dan keadaan ruang kerjanya perlu disediakan semula. swift package purge-cache membuang cache repositori global SwiftPM yang dikongsi oleh projek lain, jadi penyelesaian (resolve) atau binaan seterusnya mungkin memerlukan rangkaian dan mengambil masa lebih lama.
- Simpan atau commit perubahan kod sumber, kemudian pastikan Package.swift dan Package.resolved berada di tempat yang dijangka oleh projek.
- Dari akar pakej, jalankan swift package clean dan cuba binaan asal sekali lagi.
- Jika ruang kerja setempat pakej masih tidak konsisten, jalankan swift package reset, kemudian selesaikan (resolve) dan bina semula.
- Jalankan swift package purge-cache hanya jika cache repositori bersama terlalu besar atau rosak.
- Sahkan graf kebergantungan dan binaan sebelum membersihkan DerivedData khusus Xcode.
Perintah yang tersedia bergantung pada toolchain Swift yang dipasang. Jalankan swift package --help untuk mengesahkan subperintah yang disokong pada Mac itu.
Kekalkan Package.resolved dan Package.swift
Package.resolved merekodkan versi kebergantungan yang telah diselesaikan, bukan cache muat turun pakai buang. Memadamnya membolehkan penyelesaian seterusnya memilih versi lain yang dibenarkan oleh Package.swift, lalu pembersihan bertukar menjadi kemas kini kebergantungan secara senyap. Package.swift, Sources, Tests, pemalam dan kebergantungan laluan setempat ialah fail sumber; jangan padam atau ubah fail ini sebagai sebahagian daripada pembersihan cache.
Bersihkan pakej Swift yang digunakan oleh Xcode
Bagi kebergantungan pakej dalam projek Xcode, mulakan dengan File > Packages > Reset Package Caches jika versi Xcode anda menyediakannya, kemudian File > Packages > Resolve Package Versions. Jika masalahnya berpunca daripada artifak pakej yang telah dikompil, padam hanya DerivedData projek itu melalui Xcode Settings > Locations atau Finder, bukan seluruh akar DerivedData. Ukur folder .build dan cache bersama sebelum purge global. AskClean boleh menunjukkan kategori storan di sekeliling SwiftPM, tetapi perintah Swift tetap menentukan skop cache.
Ringkasan keputusan dan risiko
Kosongkan cache Swift Package Manager (SPM) dengan selamat: bila perlu guna swift package clean, reset atau purge-cache, dan cara mengekalkan Package.resolved.
| Perkara | Tempat menyemak | Had keselamatan |
|---|---|---|
| SwiftPM mempunyai lebih daripada satu cache | .build / DerivedData / cache repositori | SwiftPM menyimpan data yang boleh dijana semula pada beberapa skop yang berbeza. |
| Pilih perintah mengikut skop | swift package clean / reset / purge-cache | swift package clean memadam artifak binaan pakej semasa dan menjadi pilihan pertama bagi output terkompil yang lapuk atau pembersihan ruang dalam satu repositori. |
| Kekalkan Package.resolved dan Package.swift | Package.swift / Package.resolved | Package.resolved merekodkan versi kebergantungan yang telah diselesaikan, bukan cache muat turun pakai buang. |
| Bersihkan pakej Swift yang digunakan oleh Xcode | File > Packages / DerivedData | Bagi kebergantungan pakej dalam projek Xcode, mulakan dengan File > Packages > Reset Package Caches jika versi Xcode anda menyediakannya, kemudian File > Packages > Resolve Package Versions. |
Soalan lazim
Apakah yang dipadam oleh swift package clean?
Artifak binaan bagi pakej semasa. Perintah ini tidak memadam Package.swift atau mengubah keperluan kebergantungan; binaan seterusnya mencipta semula output yang dijana.
Apakah perbezaan antara reset dan purge-cache?
reset menyasarkan keseluruhan cache dan direktori binaan pakej semasa; purge-cache menyasarkan cache repositori global yang dikongsi oleh SwiftPM. Purge memberi kesan lebih luas kepada muat turun kebergantungan semua projek pada masa hadapan.
Perlukah Package.resolved dipadam?
Bukan untuk pembersihan biasa. Fail ini merekodkan versi kebergantungan yang telah diselesaikan, dan memadamnya boleh mengubah versi yang dipilih kelak. Padam hanya jika anda sengaja mahukan penyelesaian versi yang baharu.
Sumber