AskClean

Swift Package Manager कैश सुरक्षित रूप से कैसे साफ़ करें

AskClean टीम · अपडेट: 2026-11-02

किसी एक प्रोजेक्ट के बिल्ड आउटपुट के लिए swift package clean, उसी पैकेज का पूरा बिल्ड कैश रीसेट करने के लिए swift package reset, और SwiftPM के साझा रिपॉज़िटरी कैश के लिए swift package purge-cache इस्तेमाल करें। Package.swift और Package.resolved रखें: ये डिपेंडेंसी तय करते हैं, इन्हें कैश समझकर डिलीट नहीं करना चाहिए।

सक्रिय Swift पैकेज क्यूब वाला डिपेंडेंसी ग्राफ़, जिसे दोहराई गई कैश परतों से अलग रखा गया है
SwiftPM की सबसे छोटे दायरे वाली सफ़ाई चुनें: पहले प्रोजेक्ट के बिल्ड आउटपुट, साझा डाउनलोड तभी जब समस्या वहीं हो।

SwiftPM का कैश एक नहीं, कई परतों में है

कमांड-लाइन पैकेज में आम तौर पर एक .build डायरेक्टरी होती है, जिसमें चेकआउट, रिपॉज़िटरी, बिल्ड आउटपुट और वर्कस्पेस की स्थिति रहती है। इसके अलावा SwiftPM एक साझा रिपॉज़िटरी कैश रखता है, ताकि कई प्रोजेक्ट को एक ही डिपेंडेंसी हर बार नेटवर्क से न लानी पड़े। Xcode एक और परत जोड़ता है: ऐप में इस्तेमाल हुए पैकेज के चेकआउट और बिल्ड प्रोडक्ट आम तौर पर उस प्रोजेक्ट के DerivedData से जुड़े रहते हैं, इसलिए जो समस्या सिर्फ़ Xcode में दिखे, उसकी सफ़ाई का तरीका भी अलग हो सकता है। सबसे सुरक्षित नियम: सिर्फ़ उस सबसे छोटी परत को साफ़ करें जिससे समस्या समझ में आती है।

दायरे के हिसाब से कमांड चुनें

swift package clean पैकेज के बिल्ड आउटपुट डिलीट करता है — पुराने कंपाइल आउटपुट, बेवजह की लिंकर गड़बड़ी या किसी एक रिपॉज़िटरी तक सीमित जगह की सफ़ाई के लिए यही पहला विकल्प है। swift package reset उस पैकेज का पूरा कैश और बिल्ड डायरेक्टरी रीसेट करता है; यह clean से व्यापक है, इसलिए इसे तभी चलाएँ जब clean से ख़राब या बेमेल लोकल वर्कस्पेस ठीक न हो। swift package purge-cache SwiftPM का ग्लोबल रिपॉज़िटरी कैश मिटा देता है: सभी प्रोजेक्ट को मिलने वाला डाउनलोड का फ़ायदा चला जाता है और अगली बार रिज़ॉल्व या बिल्ड में नेटवर्क और ज़्यादा समय लग सकता है। इसे रोज़ की आदत न बनाएँ, सिर्फ़ सचमुच बहुत बड़े या ख़राब ग्लोबल कैश के लिए इस्तेमाल करें।

  1. सोर्स में किए बदलाव कमिट या stash करें, फिर पक्का करें कि Package.swift और Package.resolved वहीं मौजूद हैं जहाँ आपका प्रोजेक्ट उन्हें ढूँढता है।
  2. पैकेज की रूट डायरेक्टरी से swift package clean चलाएँ और वही बिल्ड फिर से आज़माएँ।
  3. अगर पैकेज का लोकल वर्कस्पेस अब भी बेमेल है, तो swift package reset चलाएँ, फिर दोबारा रिज़ॉल्व और बिल्ड करें।
  4. swift package purge-cache तभी चलाएँ जब साझा रिपॉज़िटरी कैश सचमुच बहुत बड़ा या ख़राब हो।
  5. Xcode से जुड़ा कोई DerivedData साफ़ करने से पहले डिपेंडेंसी ग्राफ़ और बिल्ड जाँच लें।

कौन-से कमांड उपलब्ध हैं, यह इंस्टॉल किए गए Swift टूलचेन पर निर्भर है। उस Mac पर कौन-से सबकमांड चलते हैं, यह swift package --help से पक्का करें।

वर्शन अपडेट करने का इरादा न हो, तो Package.resolved रखें

Package.resolved में दर्ज रहता है कि डिपेंडेंसी के कौन-से वर्शन तय हुए हैं; यह फेंकने लायक़ डाउनलोड कैश नहीं है। ऐप के मामले में इसे वर्शन कंट्रोल में रखने से टीम के साथी और CI एक जैसे वर्शन इस्तेमाल करते हैं। इसे डिलीट करने पर अगली बार Package.swift में अनुमत दूसरे वर्शन चुने जा सकते हैं — यानी जगह की मामूली सफ़ाई चुपचाप डिपेंडेंसी अपग्रेड बन सकती है। Package.swift, Sources, Tests, प्लगइन और लोकल पाथ वाली डिपेंडेंसी सोर्स हैं: .build की बनाई सामग्री लौट आती है, आपकी लिखी फ़ाइलें नहीं।

Xcode में इस्तेमाल हो रहे Swift पैकेज साफ़ करें

Xcode प्रोजेक्ट की पैकेज डिपेंडेंसी के लिए, अगर आपके Xcode वर्शन में यह कमांड है, तो पहले File > Packages > Reset Package Caches चलाएँ, फिर File > Packages > Resolve Package Versions से डिपेंडेंसी ग्राफ़ वापस लाएँ। समस्या प्रोजेक्ट के कंपाइल किए गए पैकेज आउटपुट से जुड़ी हो, तो Xcode Settings > Locations या Finder से सिर्फ़ उसी प्रोजेक्ट का DerivedData डिलीट करें, पूरी DerivedData रूट नहीं। ग्लोबल purge से पहले .build फ़ोल्डर और साझा कैश मापें और मूल एरर लिख लें: ऑथेंटिकेशन, Git होस्ट, मैनिफ़ेस्ट या checksum की गड़बड़ियाँ डाउनलोड मिटाने से ठीक नहीं होतीं। AskClean आसपास की डेवलपर स्टोरेज की श्रेणियाँ पहचानता है, लेकिन SwiftPM कैश का दायरा Swift के आधिकारिक कमांड ही तय करते हैं।

फ़ैसलों और जोखिमों की तुलना

Swift Package Manager (SPM) कैश सुरक्षित रूप से साफ़ करें: swift package clean, reset या purge-cache कब इस्तेमाल करें और Package.resolved को कैसे बचाएँ।

फ़ैसलाकहाँ जाँचेंसुरक्षा सीमा
SwiftPM का कैश एक नहीं, कई परतों में है.build / DerivedData / रिपॉज़िटरी कैशकमांड-लाइन पैकेज में आम तौर पर एक .build डायरेक्टरी होती है, जिसमें चेकआउट, रिपॉज़िटरी, बिल्ड आउटपुट और वर्कस्पेस की स्थिति रहती है।
दायरे के हिसाब से कमांड चुनेंswift package clean / reset / purge-cacheswift package clean पैकेज के बिल्ड आउटपुट डिलीट करता है — पुराने कंपाइल आउटपुट, बेवजह की लिंकर गड़बड़ी या किसी एक रिपॉज़िटरी तक सीमित जगह की सफ़ाई के लिए यही पहला विकल्प है।
वर्शन अपडेट करने का इरादा न हो, तो Package.resolved रखेंPackage.swift / Package.resolvedPackage.resolved में दर्ज रहता है कि डिपेंडेंसी के कौन-से वर्शन तय हुए हैं; यह फेंकने लायक़ डाउनलोड कैश नहीं है।
Xcode में इस्तेमाल हो रहे Swift पैकेज साफ़ करेंFile > Packages / DerivedDataXcode प्रोजेक्ट की पैकेज डिपेंडेंसी के लिए, अगर आपके Xcode वर्शन में यह कमांड है, तो पहले File > Packages > Reset Package Caches चलाएँ, फिर File > Packages > Resolve Package Versions से डिपेंडेंसी ग्राफ़ वापस लाएँ।

FAQ

swift package clean क्या डिलीट करता है?

मौजूदा पैकेज के बिल्ड आउटपुट। यह Package.swift डिलीट नहीं करता और डिपेंडेंसी की शर्तें जानबूझकर अपडेट नहीं करता; अगला बिल्ड ये आउटपुट फिर से बना देता है।

reset और purge-cache में क्या फ़र्क़ है?

reset मौजूदा पैकेज के पूरे कैश और बिल्ड डायरेक्टरी पर काम करता है; purge-cache SwiftPM के साझा ग्लोबल रिपॉज़िटरी कैश पर। purge का असर ज़्यादा व्यापक है: आगे कई प्रोजेक्ट को डिपेंडेंसी फिर से डाउनलोड करनी पड़ सकती हैं।

क्या Package.resolved डिलीट करनी चाहिए?

सामान्य सफ़ाई में नहीं। इसमें तय हुए डिपेंडेंसी वर्शन दर्ज रहते हैं, और इसे डिलीट करने से अगली बार दूसरे वर्शन चुने जा सकते हैं। इसे तभी हटाएँ जब आप जानबूझकर नए सिरे से रिज़ॉल्व करना चाहते हों।

स्रोत

डेवलपर स्टोरेज से जुड़ी और गाइड