Як видалити node_modules на Mac і не втратити проєкт
Команда AskClean · Оновлено 2026-11-02
Папку node_modules можна видалити, якщо збережено package.json, відповідний lock-файл, вихідний код і конфігурацію, а всі залежності досі доступні. Спершу виміряйте один проєкт і зупиніть процеси, що використовують його залежності. Потім перемістіть у Смітник лише node_modules, відновіть залежності менеджером пакетів, прийнятим у репозиторії, і перевірте збірку, тести та запуск, перш ніж очищати Смітник. Не плутайте node_modules зі спільним кешем завантажень npm: у них різні розташування, призначення й вартість відновлення.

Відокремте node_modules від проєкту й кешу npm
node_modules — це встановлене дерево залежностей проєкту: за належних умов його можна відтворити, але до повторного встановлення проєкт не запускатиметься й не збиратиметься. package.json, lock-файл, вихідний код, конфігурація, патчі, файли робочих областей та історія Git лежать поза цією папкою й потрібні для відновлення, тому їх видаляти не можна. Спільний кеш завантажень npm, зазвичай у ~/.npm, — окрема категорія: його очищення зачіпає багато проєктів, але не прибирає вже встановлених node_modules.
Переконайтеся, що залежності справді можна відновити
Lock-файл робить розвʼязання залежностей передбачуваним, але самих пакетів не містить. Перевірте менеджер пакетів і його версію (зокрема поле packageManager у package.json), доступ до приватних реєстрів і VPN, залежностей Git і file:, локальних робочих областей, зовнішніх завантажень та інструментів для збирання нативних модулів. npm v12 більше не читає npm-shrinkwrap.json: якщо це єдиний lock-файл старого проєкту, перейменуйте його на package-lock.json. Ніколи не перезаписуйте наявний package-lock.json; якщо в проєкті є обидва файли, порівняйте й узгодьте їх окремою контрольованою зміною. Правки, зроблені лише всередині node_modules, після видалення зникнуть, тож заздалегідь перенесіть їх у форк або патч.
- У корені проєкту виконайте pwd і du -sh ./node_modules, а потім запишіть обсяг вільного місця в macOS.
- Перевірте package.json, відповідний lock-файл, конфігурацію робочих областей і локальні зміни; для npm v12 перейменуйте npm-shrinkwrap.json на package-lock.json, лише якщо package-lock.json ще немає.
- Переконайтеся, що доступні приватні реєстри, залежності Git і file:, локальні пакети, зовнішні завантаження та інструменти збирання, а тоді зупиніть процеси, що використовують node_modules.
- Перемістіть у Смітник лише перевірену папку node_modules і встановіть залежності знову з потрібного кореня, використовуючи прийняті в репозиторії менеджер пакетів і lock-файл.
- Запустіть збірку, тести, лінтер і саму програму, знову перевірте вільне місце й очищуйте Смітник лише після успішної перевірки.
Не тримайте в node_modules єдину копію пакета чи ручної правки. Якщо точна залежність більше недоступна й ніде не збережена, після видалення старий проєкт може перестати працювати.
Видаліть лише одну перевірену папку залежностей
У Finder перемістіть у Смітник тільки папку node_modules перевіреного проєкту, а не весь репозиторій. Команда rm -rf ./node_modules оминає Смітник і видаляє безповоротно, тож спершу перейдіть у корінь проєкту й перевірте його командою pwd. Якщо основним lock-файлом є package-lock.json, використовуйте npm ci; для pnpm, Yarn або Bun застосовуйте зафіксований у репозиторії менеджер і режим, що забороняє змінювати lock-файл (наприклад, --frozen-lockfile чи --immutable). У монорепозиторії починайте з кореневого lock-файлу й розглядайте всі робочі області як одну систему залежностей. AskClean видаляє підтверджені папки назавжди, без Смітника, тож якщо вам потрібен запас для відновлення, перемістіть папку в Смітник у Finder самостійно.
Перевстановіть залежності й перевірте весь проєкт
Успішне встановлення ще не доводить, що проєкт відновлено. Запустіть передбачені в репозиторії збірку, тести, лінтер і саму програму: нативні модулі та скрипти життєвого циклу можуть зламатися після оновлення Node.js, macOS чи інструментів. Повторне встановлення означає завантаження й розпакування пакетів, створення посилань, запуск скриптів, а іноді й компіляцію коду — на повільному чи лімітному підключенні це відчутна ціна. У разі помилки поверніть папку зі Смітника й перевірте доступ, мережу, версії та lock-файл, перш ніж очищати наступний проєкт.
Що можна видаляти та скільки коштує відновлення
Знайдіть великі папки node_modules на Mac, збережіть вихідний код і lock-файл, а потім безпечно встановіть залежності знову через npm, pnpm, Yarn або Bun.
| Тема | Де і чим перевірити | Що врахувати |
|---|---|---|
| Відокремте node_modules від проєкту й кешу npm | <проєкт>/node_modules | node_modules — це встановлене дерево залежностей проєкту: за належних умов його можна відтворити, але до повторного встановлення проєкт не запускатиметься й не збиратиметься. package.json, lock-файл, вихідний код, конфігурація, патчі, файли робочих областей та історія Git лежать поза цією папкою й потрібні для відновлення, тому їх видаляти не можна. |
| Переконайтеся, що залежності справді можна відновити | package.json + lock-файл + конфігурація робочих областей | Lock-файл робить розвʼязання залежностей передбачуваним, але самих пакетів не містить. |
| Видаліть лише одну перевірену папку залежностей | Смітник / повторне встановлення менеджером пакетів | У Finder перемістіть у Смітник тільки папку node_modules перевіреного проєкту, а не весь репозиторій. |
| Перевстановіть залежності й перевірте весь проєкт | збірка + тести + запуск програми | Успішне встановлення ще не доводить, що проєкт відновлено. |
Часті запитання
Чи безпечно видаляти node_modules на Mac?
Зазвичай так, якщо збережено package.json, відповідний lock-файл, файли робочих областей, вихідний код і доступ до всіх джерел залежностей. Але до повторного встановлення проєкт не запускатиметься й не збиратиметься: перемістіть папку в Смітник, перевстановіть залежності й протестуйте проєкт, а Смітник очистьте лише тоді, коли все працює.
Чи треба видаляти package-lock.json разом із node_modules?
Ні. package-lock.json фіксує розвʼязання залежностей npm і потрібен для npm ci. npm v12 більше не читає npm-shrinkwrap.json: якщо це єдиний lock-файл старого проєкту, перейменуйте його на package-lock.json, але ніколи не перезаписуйте файл, який уже має цю назву.
node_modules і кеш npm — це те саме?
Ні. node_modules містить установлені залежності одного проєкту, а спільний кеш npm зазвичай розташований у ~/.npm. Видалення одного не видаляє іншого, а вартість відновлення стосується різної кількості проєктів.
Джерела