Πώς να διαγράψετε το node_modules στο Mac χωρίς να χάσετε το έργο σας
Ομάδα AskClean · Ενημερώθηκε 2026-08-05
Μπορείτε να διαγράψετε το node_modules ενός έργου μόνο αν παραμένουν άθικτα το package.json, το σωστό lockfile, τα αρχεία workspace, ο πηγαίος κώδικας και η πρόσβαση σε όλες τις εξαρτήσεις. Μετρήστε πρώτα τον φάκελο, σταματήστε τις ενεργές διεργασίες, μετακινήστε μόνο τον επιβεβαιωμένο στόχο στον Κάδο και εγκαταστήστε ξανά από τη σωστή ρίζα με τον διαχειριστή πακέτων του αποθετηρίου.

Ξεχωρίστε το node_modules από το έργο και την cache του npm
Το node_modules είναι το εγκατεστημένο δέντρο εξαρτήσεων ενός έργου. Συνήθως μπορεί να αναδημιουργηθεί, αλλά το έργο δεν θα εκτελείται ούτε θα κάνει build ώσπου να ολοκληρωθεί η επανεγκατάσταση. Τα package.json, lockfiles, αρχεία workspace, patches, ο πηγαίος κώδικας και το ιστορικό Git είναι απαραίτητα για την αναδημιουργία και δεν αποτελούν cache. Η κοινόχρηστη cache λήψεων του npm, συνήθως στο ~/.npm, είναι διαφορετική κατηγορία και επηρεάζει πολλές εγκαταστάσεις.
Βεβαιωθείτε ότι το έργο μπορεί πράγματι να αναδημιουργηθεί
Εντοπίστε τον διαχειριστή πακέτων και κρατήστε το αντίστοιχο lockfile: package-lock.json για npm, pnpm-lock.yaml για pnpm, yarn.lock για Yarn και bun.lock ή το παλαιότερο bun.lockb για Bun. Το npm v12 δεν διαβάζει πλέον npm-shrinkwrap.json. Αν αυτό είναι το μοναδικό lockfile ενός παλιού έργου, μετονομάστε το σε package-lock.json πριν χρησιμοποιήσετε npm v12· μην αντικαταστήσετε ποτέ ένα package-lock.json που υπάρχει ήδη. Το lockfile δεν περιέχει τα ίδια τα πακέτα και δεν αντικαθιστά credentials, VPN, προσβάσιμα Git commits, εξαρτήσεις file:, τοπικά workspaces, compilers ή εξωτερικές λήψεις. Επίσης, κάθε χειροκίνητη αλλαγή που υπάρχει μόνο μέσα στο node_modules θα χαθεί.
- Στη ρίζα του έργου εκτελέστε pwd και du -sh ./node_modules και καταγράψτε τον διαθέσιμο χώρο του macOS.
- Επιβεβαιώστε package.json, το σωστό lockfile, τις ρυθμίσεις workspace και τις τοπικές αλλαγές. Με npm v12 μετονομάστε npm-shrinkwrap.json σε package-lock.json μόνο αν δεν υπάρχει ήδη package-lock.json.
- Ελέγξτε την πρόσβαση σε ιδιωτικά registries, εξαρτήσεις Git και file:, τοπικά workspaces, εξωτερικές λήψεις και εργαλεία build και μετά σταματήστε τις διεργασίες που χρησιμοποιούν το node_modules.
- Μετακινήστε μόνο το επιβεβαιωμένο node_modules στον Κάδο και εγκαταστήστε ξανά από τη σωστή ρίζα, με τον διαχειριστή πακέτων και το lockfile του αποθετηρίου.
- Εκτελέστε build, tests, lint και ελέγχους εκκίνησης, μετρήστε ξανά τον χώρο και αδειάστε τον Κάδο μόνο όταν το έργο λειτουργεί.
Μην χρησιμοποιείτε το node_modules ως μοναδικό αντίγραφο πακέτου ή χειροκίνητης διόρθωσης. Αν η ακριβής εξάρτηση δεν είναι πλέον διαθέσιμη και δεν έχετε διατηρήσει τον πηγαίο κώδικα ή ένα patch, η διαγραφή μπορεί να καταστήσει ένα παλιό έργο μη λειτουργικό.
Αφαιρέστε έναν μόνο, επιβεβαιωμένο φάκελο εξαρτήσεων
Από τη ρίζα του αποθετηρίου που επιβεβαιώσατε με pwd, μετρήστε το ./node_modules και μετακινήστε μόνο αυτό στον Κάδο — ποτέ τον γονικό φάκελο του έργου. Το rm -rf ./node_modules παρακάμπτει τον Κάδο και είναι μη αναστρέψιμο· μην το συνδυάζετε με μη ελεγμένο find, wildcard, κενή μεταβλητή ή διαδρομή από μη αξιόπιστο script. Σε monorepo, ξεκινήστε από το lockfile της ρίζας και αντιμετωπίστε τα workspaces ως ένα σύστημα εξαρτήσεων. Εγκαταστήστε ξανά με npm ci, pnpm install --frozen-lockfile, yarn install --immutable, yarn install --frozen-lockfile για Yarn Classic ή bun install --frozen-lockfile, ανάλογα με το αποθετήριο.
Επανεγκαταστήστε και ελέγξτε ολόκληρο το έργο
Μια επιτυχής εγκατάσταση αποδεικνύει μόνο ότι οι εξαρτήσεις ανακτήθηκαν στο σημερινό περιβάλλον. Εκτελέστε τα τεκμηριωμένα build, tests, lint και ελέγχους εκκίνησης· native add-ons και lifecycle scripts μπορεί να αποτύχουν μετά από αλλαγή Node.js, macOS ή toolchain. Αν η εγκατάσταση αποτύχει, επαναφέρετε τον φάκελο από τον Κάδο και ελέγξτε πρόσβαση, δίκτυο, εκδόσεις εργαλείων και συνέπεια lockfile πριν καθαρίσετε άλλο έργο. Κρατήστε το παλιό node_modules στον Κάδο μέχρι να περάσουν όλοι οι έλεγχοι και μετρήστε τον πραγματικό ελεύθερο χώρο.
Όρια διαγραφής και κόστος επαναφοράς
Εντοπίστε μεγάλους φακέλους node_modules, προστατέψτε τον πηγαίο κώδικα και τα lockfiles και εγκαταστήστε ξανά τις εξαρτήσεις με τον σωστό διαχειριστή πακέτων.
| Στοιχείο ή ενέργεια | Έλεγχος | Συνέπεια |
|---|---|---|
| Ξεχωρίστε το node_modules από το έργο και την cache του npm | <έργο>/node_modules | Το node_modules είναι το εγκατεστημένο δέντρο εξαρτήσεων ενός έργου. Συνήθως μπορεί να αναδημιουργηθεί, αλλά το έργο δεν θα εκτελείται ούτε θα κάνει build ώσπου να ολοκληρωθεί η επανεγκατάσταση. Τα package.json, lockfiles, αρχεία workspace, patches, ο πηγαίος κώδικας και το ιστορικό Git είναι απαραίτητα για την αναδημιουργία και δεν αποτελούν cache. Η κοινόχρηστη cache λήψεων του npm, συνήθως στο ~/.npm, είναι διαφορετική κατηγορία και επηρεάζει πολλές εγκαταστάσεις. |
| Βεβαιωθείτε ότι το έργο μπορεί πράγματι να αναδημιουργηθεί | package.json + lockfile + ρυθμίσεις workspace | Εντοπίστε τον διαχειριστή πακέτων και κρατήστε το αντίστοιχο lockfile: package-lock.json για npm, pnpm-lock.yaml για pnpm, yarn.lock για Yarn και bun.lock ή το παλαιότερο bun.lockb για Bun. Το npm v12 δεν διαβάζει πλέον npm-shrinkwrap.json. Αν αυτό είναι το μοναδικό lockfile ενός παλιού έργου, μετονομάστε το σε package-lock.json πριν χρησιμοποιήσετε npm v12· μην αντικαταστήσετε ποτέ ένα package-lock.json που υπάρχει ήδη. Το lockfile δεν περιέχει τα ίδια τα πακέτα και δεν αντικαθιστά credentials, VPN, προσβάσιμα Git commits, εξαρτήσεις file:, τοπικά workspaces, compilers ή εξωτερικές λήψεις. Επίσης, κάθε χειροκίνητη αλλαγή που υπάρχει μόνο μέσα στο node_modules θα χαθεί. |
| Αφαιρέστε έναν μόνο, επιβεβαιωμένο φάκελο εξαρτήσεων | Κάδος / επανεγκατάσταση μέσω διαχειριστή πακέτων | Από τη ρίζα του αποθετηρίου που επιβεβαιώσατε με pwd, μετρήστε το ./node_modules και μετακινήστε μόνο αυτό στον Κάδο — ποτέ τον γονικό φάκελο του έργου. Το rm -rf ./node_modules παρακάμπτει τον Κάδο και είναι μη αναστρέψιμο· μην το συνδυάζετε με μη ελεγμένο find, wildcard, κενή μεταβλητή ή διαδρομή από μη αξιόπιστο script. Σε monorepo, ξεκινήστε από το lockfile της ρίζας και αντιμετωπίστε τα workspaces ως ένα σύστημα εξαρτήσεων. Εγκαταστήστε ξανά με npm ci, pnpm install --frozen-lockfile, yarn install --immutable, yarn install --frozen-lockfile για Yarn Classic ή bun install --frozen-lockfile, ανάλογα με το αποθετήριο. |
| Επανεγκαταστήστε και ελέγξτε ολόκληρο το έργο | build + tests + lint + εκκίνηση | Μια επιτυχής εγκατάσταση αποδεικνύει μόνο ότι οι εξαρτήσεις ανακτήθηκαν στο σημερινό περιβάλλον. Εκτελέστε τα τεκμηριωμένα build, tests, lint και ελέγχους εκκίνησης· native add-ons και lifecycle scripts μπορεί να αποτύχουν μετά από αλλαγή Node.js, macOS ή toolchain. Αν η εγκατάσταση αποτύχει, επαναφέρετε τον φάκελο από τον Κάδο και ελέγξτε πρόσβαση, δίκτυο, εκδόσεις εργαλείων και συνέπεια lockfile πριν καθαρίσετε άλλο έργο. Κρατήστε το παλιό node_modules στον Κάδο μέχρι να περάσουν όλοι οι έλεγχοι και μετρήστε τον πραγματικό ελεύθερο χώρο. |
Συχνές ερωτήσεις
Είναι ασφαλές να διαγράψω το node_modules στο Mac;
Συνήθως ναι, εφόσον παραμένουν άθικτα το package.json, το σωστό lockfile, τα αρχεία workspace, ο πηγαίος κώδικας και όλες οι απαιτούμενες πηγές εξαρτήσεων. Το έργο δεν θα λειτουργεί μέχρι να ολοκληρωθούν η επανεγκατάσταση και οι έλεγχοι.
Να διαγράψω το package-lock.json μαζί με το node_modules;
Όχι. Το package-lock.json επιτρέπει στο npm να αναπαράγει την επίλυση εξαρτήσεων. Αν το μοναδικό lockfile ενός παλιού έργου είναι npm-shrinkwrap.json, το npm v12 απαιτεί να το μετονομάσετε σε package-lock.json· μην διαγράψετε το αρχείο και μην αντικαταστήσετε ένα package-lock.json που υπάρχει ήδη.
Είναι το node_modules ίδιο με την cache npm;
Όχι. Το node_modules περιέχει τις εγκατεστημένες εξαρτήσεις ενός έργου, ενώ η κοινόχρηστη cache του npm βρίσκεται συνήθως στο ~/.npm. Η διαγραφή του πρώτου ακινητοποιεί εκείνο το έργο μέχρι την επανεγκατάσταση· ο καθαρισμός της δεύτερης επιβάλλει νέες λήψεις σε πολλά έργα.
Πηγές