איך לנקות בבטחה את המטמון של npm ב-Mac
צוות AskClean · עודכן 2026-08-05
אתרו את המטמון הפעיל עם 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, proxy, תאימות 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 או ל-proxy, או אם חבילה הוסרה מהמקור. הגבילו את --force לפקודה הזאת ואל תשמרו אותו כהגדרת npm קבועה, מפני שהוא מחליש הגנות גם בפעולות אחרות.
אמתו את התוצאה בלי לשנות את עץ התלויות
לאחר הניקוי, בקשו שוב את הנתיב עם npm config get cache, מדדו אותו והשוו את המקום הפנוי בפועל ב-macOS. בדקו פרויקט מייצג בלי לשנות את package.json או קובץ הנעילה, ולאחר ההתקנה הריצו את הבנייה והבדיקות שלו. אם אותה שגיאה חוזרת, אל תנקו שוב; בדקו את השגיאה שנשמרה, גרסאות npm ו-Node.js, פרטי התחברות והרשת. AskClean מזהה את נתיב ברירת המחדל ~/.npm, אך נתיב מותאם עדיין דורש אימות דרך npm.
גבולות המחיקה ועלות השחזור
אתרו ומדדו את מטמון ההורדות שבו npm משתמש בפועל, אמתו אותו תחילה ונקו רק כשהמקום שיתפנה מצדיק הורדות חוזרות.
| פריט או פעולה | מיקום או כלי בדיקה | השלכה |
|---|---|---|
| הפרידו את המטמון של npm מקובצי הפרויקט ומהתלויות | npm config get cache | המטמון של npm שומר הורדות לשימוש חוזר בין כמה פרויקטים. ברירת המחדל ב-macOS היא ~/.npm, אך הגדרות יכולות להעביר אותו. node_modules הוא עץ תלויות שמותקן בפרויקט, ואילו package.json ו-package-lock.json מתארים את מצבו ואינם מטמון. גם npm-shrinkwrap.json אינו מטמון, אך npm v12 אינו קורא אותו עוד; אם זהו קובץ הנעילה היחיד בפרויקט ישן, שנו את שמו ל-package-lock.json לפני התקנה מחדש באמצעות npm v12, ולעולם אל תדרסו package-lock.json קיים. |
| מדדו את המטמון הפעיל והתחילו באימות | npm cache verify | אל תניחו שהימצאות ~/.npm אומרת שזהו הנתיב הפעיל. npm config get cache מציג את הנתיב לפי ההגדרות הנוכחיות; מדדו את הנתיב הזה ורשמו את המקום הפנוי. npm cache verify בודק את האינדקס ואת שלמות התוכן ומפנה נתונים מיותרים בלי להשליך את כל ההורדות התקינות, ולעיתים קרובות הוא מספיק לתחזוקה. שגיאות ERESOLVE, כשלי הזדהות, 404, proxy, תאימות Node.js, בנייה של מודולים בינאריים או postinstall דורשות אבחון אחר. |
| השתמשו ב-npm cache clean --force רק כשיש הצדקה | npm cache clean --force | הריצו npm cache clean --force רק אם המטמון שנמדד גדול מספיק, המקום דרוש כעת ואפשר להשיג שוב את הקבצים הנחוצים. ההתקנה הבאה או npm ci עשויות להיות איטיות יותר ואף להיכשל בלי גישה לרשת, למאגר פרטי, למארח Git או ל-proxy, או אם חבילה הוסרה מהמקור. הגבילו את --force לפקודה הזאת ואל תשמרו אותו כהגדרת npm קבועה, מפני שהוא מחליש הגנות גם בפעולות אחרות. |
| אמתו את התוצאה בלי לשנות את עץ התלויות | התקנה + בדיקת עבודה ללא רשת / מאגר פרטי | לאחר הניקוי, בקשו שוב את הנתיב עם npm config get cache, מדדו אותו והשוו את המקום הפנוי בפועל ב-macOS. בדקו פרויקט מייצג בלי לשנות את package.json או קובץ הנעילה, ולאחר ההתקנה הריצו את הבנייה והבדיקות שלו. אם אותה שגיאה חוזרת, אל תנקו שוב; בדקו את השגיאה שנשמרה, גרסאות npm ו-Node.js, פרטי התחברות והרשת. AskClean מזהה את נתיב ברירת המחדל ~/.npm, אך נתיב מותאם עדיין דורש אימות דרך npm. |
שאלות נפוצות
האם npm cache clean --force בטוח ב-Mac?
הפקודה אינה מוחקת את קוד הפרויקט כאשר npm מצביע על המטמון האמיתי שלו, אך היא מוחקת הורדות לשימוש חוזר. מדדו ואמתו תחילה, עצרו תהליכי npm וצפו לכך שהתקנות עתידיות יידרשו לחיבור רשת.
האם להתחיל ב-npm cache verify או ב-npm cache clean?
התחילו תמיד ב-npm cache verify: הוא בודק שלמות ומפנה נתונים מיותרים תוך שמירת תוכן תקין. השתמשו ב-clean --force רק לפינוי מקום שנמדד או לבעיית מטמון מאומתת שה-verify לא פתר.
האם ניקוי המטמון של npm מוחק את package-lock.json?
לא. package.json ו-package-lock.json הם קובצי פרויקט. npm v12 אינו קורא עוד npm-shrinkwrap.json; אם זהו קובץ הנעילה היחיד בפרויקט ישן, שנו את שמו ל-package-lock.json בלי לדרוס קובץ קיים, והשאירו את פתרון התלויות ללא שינוי בזמן הניקוי.
מקורות