วิธีล้างแคช Swift Package Manager อย่างปลอดภัย
ทีม AskClean · อัปเดตเมื่อ 2026-07-31
ใช้ swift package clean สำหรับไฟล์ผลลัพธ์การบิลด์ของแพ็กเกจปัจจุบัน ใช้ reset เพื่อรีเซ็ตสถานะในเครื่องทั้งหมด และใช้ swift package purge-cache เฉพาะกับแคช repository ส่วนกลาง เก็บ Package.swift และ Package.resolved ไว้ เพราะเป็นตัวกำหนด dependencies ไม่ใช่แคชที่ทิ้งได้

SwiftPM มีหลายชั้น
แพ็กเกจ command line เก็บ checkouts และผลิตภัณฑ์ใน .build ขณะที่ SwiftPM มีแคช repository ร่วม Xcode อาจเก็บผลิตภัณฑ์ของแพ็กเกจใน DerivedData ของโปรเจกต์ ให้ล้างชั้นที่แคบที่สุดซึ่งอธิบายปัญหาได้
เลือกคำสั่งตามขอบเขต
swift package clean ลบไฟล์ผลลัพธ์การบิลด์ของแพ็กเกจปัจจุบัน reset กว้างกว่าและเตรียมสถานะในเครื่องใหม่ ส่วน purge-cache กระทบการดาวน์โหลดที่หลายโปรเจกต์ใช้ร่วมกัน การ resolve ครั้งถัดไปจึงอาจต้องใช้เครือข่ายและเวลามากขึ้น
- บันทึกการเปลี่ยนแปลงและตรวจว่า Package.swift กับ Package.resolved อยู่ครบ
- รัน swift package clean จาก root แล้ว build ใหม่
- ใช้ swift package reset เฉพาะเมื่อสถานะในเครื่องยังเสีย
- ใช้ swift package purge-cache เฉพาะเมื่อยืนยันว่าแคชร่วมเป็นสาเหตุ
- ตรวจ dependencies และ tests หลังล้าง
รัน swift package --help เพราะคำสั่งย่อยที่ใช้ได้ขึ้นกับเวอร์ชัน Swift ที่ติดตั้ง
เก็บไฟล์การ resolve
Package.resolved บันทึกเวอร์ชันที่เจาะจง การลบอาจเลือกเวอร์ชันอื่นที่อนุญาตและเปลี่ยนการล้างให้เป็นการอัปเดต Package.swift, Sources, Tests, plugins และ local dependencies เป็นซอร์ส ไม่ควรลบเหมือนแคช
จัดการ Xcode แยกต่างหาก
หากปัญหาเกิดเฉพาะใน Xcode ให้ลอง File > Packages > Reset Package Caches และ Resolve Package Versions หรือลบ DerivedData ของโปรเจกต์นั้น วัดโฟลเดอร์ .build ก่อน purge ส่วนกลาง AskClean ช่วยระบุหมวด แต่คำสั่ง Swift เป็นตัวกำหนดขอบเขต
คำถามที่พบบ่อย
swift package clean ลบอะไร
ลบไฟล์ผลลัพธ์การบิลด์ของแพ็กเกจปัจจุบัน ซึ่ง build ครั้งถัดไปจะสร้างใหม่
reset กับ purge-cache เหมือนกันไหม
ไม่ reset มีผลกับแพ็กเกจปัจจุบัน ส่วน purge-cache มีผลกับแคช repository ส่วนกลาง
ควรลบ Package.resolved ไหม
ไม่ควรสำหรับการล้างทั่วไป ลบเฉพาะเมื่อจงใจต้องการ resolve เวอร์ชันใหม่
แหล่งอ้างอิง