كيفية مسح ذاكرة npm المؤقتة على Mac بأمان
فريق AskClean · آخر تحديث 2026-11-02
اعثر على الذاكرة النشطة باستخدام npm config get cache، وقِس مسارها باستخدام du، ثم شغّل npm cache verify قبل أي حذف. لا تستخدم npm cache clean --force إلا عند الحاجة الفعلية إلى المساحة مع قبول التنزيلات اللاحقة. ولا يحذف ذلك node_modules ولا package.json ولا ملف القفل.

افصل ذاكرة npm المؤقتة عن ملفات المشروع واعتمادياته
تحتفظ ذاكرة npm بتنزيلات قابلة لإعادة الاستخدام بين عدة مشاريع. موقعها الافتراضي على macOS هو ~/.npm، لكن الإعدادات قد تنقلها. أما node_modules فهو شجرة اعتماديات مثبتة لمشروع، وpackage.json وpackage-lock.json يصفان حالته وليسا ذاكرة مؤقتة. كذلك ليس npm-shrinkwrap.json ذاكرة مؤقتة، ولم يعد npm v12 يقرأه؛ فإذا كان هو ملف القفل الوحيد في مشروع قديم، فأعد تسمية هذا الملف ذي التنسيق نفسه إلى package-lock.json قبل إعادة التثبيت باستخدام npm v12، ولا تستبدل ملف package-lock.json موجودًا.
قِس الذاكرة النشطة وابدأ بالتحقق منها
لا تفترض أن وجود ~/.npm يعني أنه المسار النشط. يعرض npm config get cache المسار المستخدم ضمن الإعداد الحالي؛ فقِس ذلك المسار نفسه وسجّل المساحة الحرة. يفحص npm cache verify الفهرس وسلامة المحتوى ويحذف البيانات غير اللازمة دون إهدار التنزيلات الصالحة، وغالبًا يكفي للصيانة. أما أخطاء ERESOLVE أو المصادقة أو 404 أو إعداد الوكيل الشبكي أو توافق Node.js أو بناء الوحدات الأصلية أو postinstall فتحتاج إلى تشخيص آخر.
- شغّل npm --version وnpm config get cache، ثم تأكد من أن المسار المطبوع موقع ذاكرة مؤقتة لا مجلد مشروع.
- قِس المسار الدقيق باستخدام du -sh وسجّل المساحة الحرة في macOS دون تغيير package.json أو ملف القفل.
- أوقف أي npm install أو npm ci أو npm exec أو عملية نشر جارية، ثم شغّل npm cache verify واحتفظ بملخصه وأخطائه.
- شغّل npm cache clean --force فقط إذا لم يكن التحقق كافيًا، وكانت المساحة مهمة، وظلت الملفات المطلوبة قابلة للوصول.
- شغّل npm cache verify مرة أخرى، وقِس المسار نفسه، ثم تحقق من مشروع ممثل بملف قفله دون تغيير ومن بنائه واختباراته.
لا تمرر أبدًا مسارًا غير متحقق منه إلى rm -rf. ولا تجمع مسح الذاكرة المؤقتة مع حذف ملف القفل أو إعادة إنشائه؛ فتغيير سببين معًا يبدد المقارنة اللازمة لتشخيص المشكلة.
استخدم npm cache clean --force عند وجود مبرر فقط
شغّل npm cache clean --force فقط إذا كانت الذاكرة المقاسة كبيرة بما يكفي، وكانت المساحة مطلوبة الآن، ويمكن استعادة الملفات اللازمة. قد يكون التثبيت التالي أو npm ci أبطأ، وقد يفشل دون اتصال أو عند تعذر الوصول إلى سجل خاص أو مضيف Git أو وكيل شبكي أو إلى حزمة سُحبت من مصدرها. اقصر --force على هذا الأمر ولا تحفظه إعدادًا دائمًا في npm، لأنه يخفف حمايات عمليات أخرى أيضًا.
تحقق من النتيجة دون تغيير شجرة الاعتماديات
بعد المسح، اطلب المسار مجددًا باستخدام npm config get cache، وقِسه وقارن المساحة الحرة الفعلية في macOS. اختبر مشروعًا ممثلًا مع إبقاء package.json وملف القفل دون تغيير، ثم شغّل بناءه واختباراته. وإذا عاد الخطأ نفسه فلا تكرر المسح؛ راجع الرسالة المحفوظة وإصداري npm وNode.js وبيانات الاعتماد والشبكة. يتعرف AskClean على ~/.npm الافتراضي بوصفه ذاكرة مشتركة واحدة ويحذفه نهائيًا إذا أكدت ذلك، أما المسار المخصص فيبقى بحاجة إلى تحقق عبر npm.
حدود الحذف وكلفة الاستعادة
امسح ذاكرة npm المؤقتة على Mac: قِسها وتحقق منها بـ npm cache verify أولًا، ولا تشغّل npm cache clean --force إلا عند الحاجة، واحمِ node_modules وملف القفل.
| العنصر أو الإجراء | موضع أو أداة الفحص | العاقبة |
|---|---|---|
| افصل ذاكرة npm المؤقتة عن ملفات المشروع واعتمادياته | npm config get cache | تحتفظ ذاكرة npm بتنزيلات قابلة لإعادة الاستخدام بين عدة مشاريع. |
| قِس الذاكرة النشطة وابدأ بالتحقق منها | npm cache verify | لا تفترض أن وجود ~/.npm يعني أنه المسار النشط. |
| استخدم npm cache clean --force عند وجود مبرر فقط | npm cache clean --force | شغّل npm cache clean --force فقط إذا كانت الذاكرة المقاسة كبيرة بما يكفي، وكانت المساحة مطلوبة الآن، ويمكن استعادة الملفات اللازمة. |
| تحقق من النتيجة دون تغيير شجرة الاعتماديات | التثبيت + اختبار العمل دون اتصال وسجل الحزم الخاص | بعد المسح، اطلب المسار مجددًا باستخدام npm config get cache، وقِسه وقارن المساحة الحرة الفعلية في macOS. |
الأسئلة الشائعة
هل npm cache clean --force آمن على Mac؟
لا يحذف شيفرة المشروع عندما يشير npm إلى ذاكرته الفعلية، لكنه يتخلص من تنزيلات قابلة لإعادة الاستخدام. قِس وتحقق أولًا، وأوقف عمليات npm، وتوقع أن تحتاج عمليات التثبيت اللاحقة إلى الشبكة.
هل أبدأ بـ npm cache verify أم npm cache clean؟
ابدأ دائمًا بـ npm cache verify؛ فهو يفحص السلامة ويحذف البيانات غير اللازمة مع إبقاء المحتوى الصالح. واستخدم npm cache clean --force فقط لمساحة مقاسة أو لمشكلة مؤكدة في الذاكرة لم يحلها verify.
هل مسح ذاكرة npm يحذف package-lock.json؟
لا. package.json وpackage-lock.json ملفا مشروع. ولم يعد npm v12 يقرأ npm-shrinkwrap.json؛ فإذا كان هو ملف القفل الوحيد في مشروع قديم، فأعد تسميته package-lock.json دون استبدال ملف موجود، مع إبقاء حلّ الاعتماديات دون تغيير أثناء التنظيف.
المصادر