AskCleanAskClean

Cách xóa bộ nhớ đệm Swift Package Manager an toàn

Đội ngũ AskClean · Cập nhật 2026-07-31

Dùng swift package clean cho sản phẩm build của gói hiện tại, reset để đặt lại toàn bộ trạng thái cục bộ của gói và swift package purge-cache chỉ cho bộ nhớ đệm kho lưu trữ toàn cục. Giữ Package.swift và Package.resolved: chúng xác định dependency và không phải bộ nhớ đệm dùng rồi bỏ.

Sơ đồ dependency Swift được tách khỏi các lớp bộ nhớ đệm trùng lặp
Dọn sản phẩm build của gói cục bộ trước và chỉ purge lượt tải dùng chung khi đó là nguyên nhân.

SwiftPM có nhiều lớp

Gói dòng lệnh lưu checkout và sản phẩm trong .build, còn SwiftPM duy trì bộ nhớ đệm kho lưu trữ dùng chung. Xcode có thể lưu sản phẩm gói trong DerivedData của dự án. Hãy dọn lớp hẹp nhất giải thích được vấn đề.

Chọn lệnh theo phạm vi

swift package clean xóa sản phẩm build của gói hiện tại. reset rộng hơn và chuẩn bị lại trạng thái cục bộ. purge-cache ảnh hưởng các lượt tải dùng chung giữa nhiều dự án, nên lần phân giải sau có thể cần mạng và lâu hơn.

  1. Lưu thay đổi và xác nhận Package.swift cùng Package.resolved.
  2. Chạy swift package clean từ thư mục gốc rồi build lại.
  3. Chỉ dùng swift package reset nếu trạng thái cục bộ vẫn hỏng.
  4. Chỉ dùng swift package purge-cache khi bộ nhớ đệm dùng chung được xác nhận là nguyên nhân.
  5. Kiểm tra dependency và test sau khi dọn.

Chạy swift package --help; các lệnh con có sẵn phụ thuộc phiên bản Swift đã cài.

Giữ tệp phân giải

Package.resolved ghi lại phiên bản cụ thể. Xóa nó có thể chọn phiên bản được phép khác và biến việc dọn dẹp thành cập nhật. Package.swift, Sources, Tests, plugin và dependency cục bộ là mã nguồn; đừng xóa như bộ nhớ đệm.

Xử lý Xcode riêng

Với lỗi chỉ có trong Xcode, thử File > Packages > Reset Package Caches và Resolve Package Versions hoặc xóa DerivedData của dự án đó. Đo các thư mục .build trước khi purge toàn cục. AskClean tìm danh mục, còn lệnh Swift xác định phạm vi.

Câu hỏi thường gặp

swift package clean xóa gì?

Sản phẩm build của gói hiện tại; lần build sau sẽ tạo lại.

reset và purge-cache có giống nhau không?

Không. reset nhắm gói hiện tại, purge-cache nhắm bộ nhớ đệm kho lưu trữ toàn cục.

Có nên xóa Package.resolved không?

Không cho việc dọn thông thường. Chỉ xóa nếu bạn chủ ý muốn phân giải phiên bản mới.

Nguồn tham khảo

Các hướng dẫn khác về dung lượng cho lập trình viên