איך לנקות בבטחה את המטמון של Swift Package Manager
צוות AskClean · עודכן 2026-07-31
השתמשו ב-swift package clean עבור תוצרי הבנייה של החבילה הנוכחית, ב-reset לאיפוס כל מצבה המקומי וב-swift package purge-cache רק למטמון המאגרים הגלובלי. שמרו את Package.swift ואת Package.resolved: הם מגדירים תלויות ואינם מטמון חד-פעמי.

ל-SwiftPM יש כמה שכבות
חבילת שורת פקודה שומרת עותקי checkout ותוצרים ב-.build, ואילו SwiftPM מחזיק מטמון מאגרים משותף. Xcode עשוי לשמור תוצרי חבילות ב-DerivedData של הפרויקט. נקו את השכבה המצומצמת ביותר שמסבירה את הבעיה.
בחרו פקודה לפי הטווח
הפקודה swift package clean מוחקת את תוצרי הבנייה של החבילה הנוכחית. הפקודה reset רחבה יותר ומכינה מחדש את המצב המקומי. הפקודה purge-cache משפיעה על הורדות שמשותפות לכמה פרויקטים, ולכן הפתרון הבא עשוי לדרוש רשת וזמן נוסף.
- שמרו שינויים וודאו שקיימים Package.swift ו-Package.resolved.
- הריצו swift package clean משורש החבילה ובנו שוב.
- השתמשו ב-swift package reset רק אם המצב המקומי עדיין פגום.
- השתמשו ב-swift package purge-cache רק אחרי אימות בעיה במטמון המשותף.
- בדקו תלויות ובדיקות אחרי הניקוי.
הריצו swift package --help; פקודות המשנה הזמינות תלויות בגרסת Swift המותקנת.
שמרו קובצי resolution
Package.resolved מתעד גרסאות מסוימות. מחיקתו עלולה לבחור גרסאות מותרות אחרות ולהפוך ניקוי לעדכון. Package.swift, Sources, Tests, תוספים ותלויות מקומיות הם קוד מקור, לא מטמון.
טפלו ב-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?
לא בניקוי רגיל. מחקו רק אם אתם רוצים בכוונה resolution חדש של גרסאות.
מקורות