AskClean

Як видалити node_modules на Mac і не втратити проєкт

Команда AskClean · Оновлено 2026-11-02

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

Роботизована рука переносить блок залежностей із модульної мережі до помаранчевого контейнера для утилізації, а креслення проєкту, замок і захищений блок лишаються на столі
Видаляйте лише відтворювану папку залежностей; маніфест, lock-файл, конфігурація та вихідний код мають лишатися захищеними.

Відокремте 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, після видалення зникнуть, тож заздалегідь перенесіть їх у форк або патч.

  1. У корені проєкту виконайте pwd і du -sh ./node_modules, а потім запишіть обсяг вільного місця в macOS.
  2. Перевірте package.json, відповідний lock-файл, конфігурацію робочих областей і локальні зміни; для npm v12 перейменуйте npm-shrinkwrap.json на package-lock.json, лише якщо package-lock.json ще немає.
  3. Переконайтеся, що доступні приватні реєстри, залежності Git і file:, локальні пакети, зовнішні завантаження та інструменти збирання, а тоді зупиніть процеси, що використовують node_modules.
  4. Перемістіть у Смітник лише перевірену папку node_modules і встановіть залежності знову з потрібного кореня, використовуючи прийняті в репозиторії менеджер пакетів і lock-файл.
  5. Запустіть збірку, тести, лінтер і саму програму, знову перевірте вільне місце й очищуйте Смітник лише після успішної перевірки.

Не тримайте в 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_modulesnode_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. Видалення одного не видаляє іншого, а вартість відновлення стосується різної кількості проєктів.

Джерела

Інші посібники зі сховища для розробників