AskCleanAskClean

Πώς να καθαρίσετε με ασφάλεια την 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 κρατά επαναχρησιμοποιήσιμες λήψεις· τα προστατευμένα project files και το εγκατεστημένο node_modules είναι ξεχωριστά δεδομένα.

Ξεχωρίστε την 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 χρειάζονται ξεχωριστή διάγνωση.

  1. Εκτελέστε npm --version και npm config get cache και επιβεβαιώστε ότι η διαδρομή που εμφανίζεται είναι cache και όχι φάκελος έργου.
  2. Μετρήστε την ακριβή διαδρομή με du -sh και καταγράψτε τον διαθέσιμο χώρο του macOS, χωρίς να αλλάξετε package.json ή lockfile.
  3. Σταματήστε κάθε ενεργό npm install, npm ci, npm exec ή publish, εκτελέστε npm cache verify και κρατήστε τη σύνοψη και τυχόν σφάλματα.
  4. Εκτελέστε npm cache clean --force μόνο αν το verify δεν αρκεί, το όφελος χώρου είναι ουσιαστικό και τα απαιτούμενα artifacts παραμένουν προσβάσιμα.
  5. Εκτελέστε ξανά 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 χωρίς να αντικαταστήσετε υπάρχον αρχείο και χωρίς να αλλάξετε την επίλυση κατά τον καθαρισμό.

Πηγές

Περισσότεροι οδηγοί για τον αποθηκευτικό χώρο ανάπτυξης