Πώς να καθαρίσετε με ασφάλεια την cache npm στο Mac
Ομάδα AskClean · Ενημερώθηκε 2026-08-05
Εκτελέστε npm config get cache για να βρείτε την ενεργή cache, μετρήστε ακριβώς αυτή τη διαδρομή και ξεκινήστε με npm cache verify. Χρησιμοποιήστε npm cache clean --force μόνο όταν χρειάζεστε αποδεδειγμένα τον χώρο ή έχετε επιβεβαιωμένο πρόβλημα cache. Η εντολή δεν διαγράφει node_modules, package.json ή lockfiles, αλλά οι επόμενες εγκαταστάσεις θα χρειαστούν ξανά δίκτυο και χρόνο.

Ξεχωρίστε την cache του npm από τα αρχεία του έργου
Η cache του npm είναι κοινόχρηστος, content-addressed χώρος λήψεων, με προεπιλεγμένη ρίζα το ~/.npm στο macOS· η ρύθμιση του npm μπορεί όμως να την έχει μεταφέρει αλλού. Το node_modules περιέχει τις εγκατεστημένες εξαρτήσεις ενός έργου, ενώ τα package.json και package-lock.json περιγράφουν την επίλυση και δεν είναι cache. Το npm-shrinkwrap.json επίσης δεν είναι cache, αλλά το npm v12 δεν το διαβάζει πλέον: αν είναι το μοναδικό lockfile ενός παλιού έργου, μετονομάστε το σε package-lock.json πριν από επανεγκατάσταση με npm v12. Μην αντικαταστήσετε ποτέ ένα package-lock.json που υπάρχει ήδη.
Μετρήστε την ενεργή cache και επαληθεύστε την πρώτα
Μην υποθέσετε ότι ένα υπάρχον ~/.npm είναι η ενεργή cache. Το npm config get cache εμφανίζει τη διαδρομή που ισχύει για την τρέχουσα ρύθμιση· μετρήστε ακριβώς αυτή και καταγράψτε τον διαθέσιμο χώρο του macOS. Το npm cache verify ελέγχει το index και την ακεραιότητα των δεδομένων και απομακρύνει όσα δεν χρειάζονται, διατηρώντας τις έγκυρες λήψεις. Αυτό συχνά αρκεί για τη συνήθη συντήρηση. Σφάλματα ERESOLVE, authentication, 404, proxy, Node.js engines, native build ή postinstall χρειάζονται ξεχωριστή διάγνωση.
- Εκτελέστε npm --version και npm config get cache και επιβεβαιώστε ότι η διαδρομή που εμφανίζεται είναι cache και όχι φάκελος έργου.
- Μετρήστε την ακριβή διαδρομή με du -sh και καταγράψτε τον διαθέσιμο χώρο του macOS, χωρίς να αλλάξετε package.json ή lockfile.
- Σταματήστε κάθε ενεργό npm install, npm ci, npm exec ή publish, εκτελέστε npm cache verify και κρατήστε τη σύνοψη και τυχόν σφάλματα.
- Εκτελέστε npm cache clean --force μόνο αν το verify δεν αρκεί, το όφελος χώρου είναι ουσιαστικό και τα απαιτούμενα artifacts παραμένουν προσβάσιμα.
- Εκτελέστε ξανά npm cache verify, μετρήστε την ίδια διαδρομή και δοκιμάστε ένα αντιπροσωπευτικό έργο με αμετάβλητο lockfile, build και tests.
Μην περάσετε ποτέ μη επαληθευμένη διαδρομή σε rm -rf. Μη συνδυάσετε επίσης τον καθαρισμό της cache με διαγραφή node_modules ή lockfile: αν αλλάξουν ταυτόχρονα η cache και το γράφημα εξαρτήσεων, χάνεται η βάση σύγκρισης για τη διάγνωση του σφάλματος.
Χρησιμοποιήστε clean --force μόνο για τεκμηριωμένη ανάγκη
Το npm cache clean --force απορρίπτει τις επαναχρησιμοποιήσιμες λήψεις και απαιτεί --force επειδή ο πλήρης καθαρισμός συνήθως δεν είναι αναγκαίος. Περιορίστε το --force σε αυτή την εντολή, μην το αποθηκεύσετε ως μόνιμη ρύθμιση του npm και μην χρησιμοποιήσετε χειροκίνητο rm -rf. Η επόμενη εγκατάσταση μπορεί να είναι πιο αργή ή να αποτύχει εκτός σύνδεσης ή αν δεν είναι πλέον προσβάσιμα ένα ιδιωτικό registry, ένας Git host, ένα proxy, τα credentials ή συγκεκριμένη έκδοση πακέτου. Η cache δεν είναι αξιόπιστο backup, αλλά η διαγραφή της αφαιρεί την άμεση δυνατότητα επανάχρησης εκτός σύνδεσης.
Επαληθεύστε το αποτέλεσμα χωρίς να αλλάξετε τις εξαρτήσεις
Μετά τον καθαρισμό, εκτελέστε ξανά npm config get cache και npm cache verify, μετρήστε την ίδια διαδρομή και συγκρίνετε τον πραγματικό ελεύθερο χώρο του macOS. Δοκιμάστε ένα αντιπροσωπευτικό έργο με αμετάβλητα package.json και lockfile και εκτελέστε το build και τα tests του. Αν επανεμφανιστεί το αρχικό σφάλμα, μην καθαρίσετε ξανά την cache: εξετάστε το μήνυμα που κρατήσατε, τις εκδόσεις npm και Node.js, τα credentials, το δίκτυο, την επίλυση peer dependencies, το native compilation ή τα lifecycle scripts.
Όρια διαγραφής και κόστος επαναφοράς
Βρείτε και μετρήστε την cache λήψεων που χρησιμοποιεί πράγματι το npm, επαληθεύστε την πρώτα και καθαρίστε την μόνο αν το όφελος δικαιολογεί τις νέες λήψεις.
| Στοιχείο ή ενέργεια | Έλεγχος | Συνέπεια |
|---|---|---|
| Ξεχωρίστε την cache του npm από τα αρχεία του έργου | npm config get cache | Η cache του npm είναι κοινόχρηστος, content-addressed χώρος λήψεων, με προεπιλεγμένη ρίζα το ~/.npm στο macOS· η ρύθμιση του npm μπορεί όμως να την έχει μεταφέρει αλλού. Το node_modules περιέχει τις εγκατεστημένες εξαρτήσεις ενός έργου, ενώ τα package.json και package-lock.json περιγράφουν την επίλυση και δεν είναι cache. Το npm-shrinkwrap.json επίσης δεν είναι cache, αλλά το npm v12 δεν το διαβάζει πλέον: αν είναι το μοναδικό lockfile ενός παλιού έργου, μετονομάστε το σε package-lock.json πριν από επανεγκατάσταση με npm v12. Μην αντικαταστήσετε ποτέ ένα package-lock.json που υπάρχει ήδη. |
| Μετρήστε την ενεργή cache και επαληθεύστε την πρώτα | npm cache verify | Μην υποθέσετε ότι ένα υπάρχον ~/.npm είναι η ενεργή cache. Το npm config get cache εμφανίζει τη διαδρομή που ισχύει για την τρέχουσα ρύθμιση· μετρήστε ακριβώς αυτή και καταγράψτε τον διαθέσιμο χώρο του macOS. Το npm cache verify ελέγχει το index και την ακεραιότητα των δεδομένων και απομακρύνει όσα δεν χρειάζονται, διατηρώντας τις έγκυρες λήψεις. Αυτό συχνά αρκεί για τη συνήθη συντήρηση. Σφάλματα ERESOLVE, authentication, 404, proxy, Node.js engines, native build ή postinstall χρειάζονται ξεχωριστή διάγνωση. |
| Χρησιμοποιήστε clean --force μόνο για τεκμηριωμένη ανάγκη | npm cache clean --force | Το npm cache clean --force απορρίπτει τις επαναχρησιμοποιήσιμες λήψεις και απαιτεί --force επειδή ο πλήρης καθαρισμός συνήθως δεν είναι αναγκαίος. Περιορίστε το --force σε αυτή την εντολή, μην το αποθηκεύσετε ως μόνιμη ρύθμιση του npm και μην χρησιμοποιήσετε χειροκίνητο rm -rf. Η επόμενη εγκατάσταση μπορεί να είναι πιο αργή ή να αποτύχει εκτός σύνδεσης ή αν δεν είναι πλέον προσβάσιμα ένα ιδιωτικό registry, ένας Git host, ένα proxy, τα credentials ή συγκεκριμένη έκδοση πακέτου. Η cache δεν είναι αξιόπιστο backup, αλλά η διαγραφή της αφαιρεί την άμεση δυνατότητα επανάχρησης εκτός σύνδεσης. |
| Επαληθεύστε το αποτέλεσμα χωρίς να αλλάξετε τις εξαρτήσεις | εγκατάσταση + έλεγχος εκτός σύνδεσης/ιδιωτικού registry | Μετά τον καθαρισμό, εκτελέστε ξανά npm config get cache και npm cache verify, μετρήστε την ίδια διαδρομή και συγκρίνετε τον πραγματικό ελεύθερο χώρο του macOS. Δοκιμάστε ένα αντιπροσωπευτικό έργο με αμετάβλητα package.json και lockfile και εκτελέστε το build και τα tests του. Αν επανεμφανιστεί το αρχικό σφάλμα, μην καθαρίσετε ξανά την cache: εξετάστε το μήνυμα που κρατήσατε, τις εκδόσεις npm και Node.js, τα credentials, το δίκτυο, την επίλυση peer dependencies, το native compilation ή τα lifecycle scripts. |
Συχνές ερωτήσεις
Είναι ασφαλές το npm cache clean --force στο Mac;
Δεν διαγράφει τον πηγαίο κώδικα ή τα manifests όταν το npm στοχεύει στην πραγματική cache, αλλά απορρίπτει επαναχρησιμοποιήσιμες λήψεις. Μετρήστε και εκτελέστε πρώτα npm cache verify, σταματήστε τις ενεργές διεργασίες και εξασφαλίστε πρόσβαση στο δίκτυο για τις επόμενες εγκαταστάσεις.
Να εκτελέσω npm cache verify ή npm cache clean;
Ξεκινήστε με npm cache verify: ελέγχει την ακεραιότητα και απομακρύνει δεδομένα που δεν χρειάζονται, χωρίς να απορρίπτει όλο το έγκυρο περιεχόμενο. Χρησιμοποιήστε npm cache clean --force μόνο για μετρημένη ανάκτηση χώρου ή επιβεβαιωμένο πρόβλημα cache που δεν λύθηκε με verify.
Ο καθαρισμός της cache διαγράφει το package-lock.json;
Όχι. Τα package.json και package-lock.json είναι αρχεία του έργου, όχι cache. Το npm v12 αγνοεί το npm-shrinkwrap.json· αν αυτό είναι το μοναδικό lockfile ενός παλιού έργου, μετονομάστε το σε package-lock.json χωρίς να αντικαταστήσετε υπάρχον αρχείο και χωρίς να αλλάξετε την επίλυση κατά τον καθαρισμό.
Πηγές