Как удалить node_modules на Mac и не потерять проект
Команда AskClean · Обновлено 2026-08-05
Папку node_modules проекта можно удалить, если сохранены package.json и принятый в репозитории lock-файл, а все нужные зависимости по-прежнему доступны. Сначала измерьте папку, остановите работающие процессы и переместите в Корзину только проверенную папку node_modules. Затем установите зависимости тем же менеджером пакетов и проверьте сборку, тесты и запуск, прежде чем очищать Корзину.

Отделите node_modules от проекта и кеша npm
node_modules — установленное дерево зависимостей проекта. Его можно пересоздать, пока сохранены все исходные данные и доступны нужные пакеты, но до переустановки проект не запустится и не соберётся. package.json, lock-файл, исходный код, конфигурация, репозиторный .npmrc, патчи, настройки workspaces и история Git нужны для восстановления — удалять их нельзя. Общий кеш загрузок npm, обычно расположенный в ~/.npm, относится к другой категории и используется сразу несколькими проектами.
Убедитесь, что зависимости действительно восстановимы
Lock-файл делает разрешение зависимостей предсказуемым, но не хранит сами пакеты. Проверьте версию менеджера, учётные данные приватных реестров, VPN, доступ к зависимостям Git и file:, локальным пакетам workspaces, внешним загрузкам и инструментам сборки нативных модулей. npm v12 больше не читает npm-shrinkwrap.json: если в старом проекте это единственный lock-файл, переименуйте его в package-lock.json. Никогда не перезаписывайте уже существующий package-lock.json — сначала отдельно сравните и согласуйте оба файла. Правки, внесённые только в node_modules, после удаления исчезнут.
- В корне проекта выполните pwd и du -sh ./node_modules, затем запишите объём свободного места в macOS.
- Проверьте package.json, принятый lock-файл, конфигурацию workspaces и локальные изменения; для 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. Не подставляйте в rm -rf непроверенный вывод find, маску или переменную. Если package-lock.json — основной lock-файл, используйте npm ci; для pnpm, Yarn или Bun применяйте закреплённый в репозитории менеджер и режим, запрещающий изменение lock-файла. В монорепозитории начинайте с корневого lock-файла и рассматривайте все workspaces как единую систему зависимостей.
Переустановите зависимости и проверьте весь проект
Успешная установка ещё не доказывает, что проект восстановлен. Запустите предусмотренные репозиторием команды сборки, тестов, линтинга и запуска: нативные модули и скрипты жизненного цикла могут сломаться после смены Node.js, macOS или инструментов. Восстановление потребует загрузки и распаковки пакетов, создания ссылок, запуска скриптов и иногда компиляции. При ошибке верните папку из Корзины и проверьте доступ, сеть, версии и lock-файл, прежде чем чистить следующий проект.
Границы удаления и стоимость восстановления
Найдите крупные папки node_modules, сохраните исходный код и lock-файл, затем безопасно переустановите зависимости с помощью npm, pnpm, Yarn или Bun.
| Объект или действие | Где и чем проверить | Последствие |
|---|---|---|
| Отделите node_modules от проекта и кеша npm | <проект>/node_modules | node_modules — установленное дерево зависимостей проекта. Его можно пересоздать, пока сохранены все исходные данные и доступны нужные пакеты, но до переустановки проект не запустится и не соберётся. package.json, lock-файл, исходный код, конфигурация, репозиторный .npmrc, патчи, настройки workspaces и история Git нужны для восстановления — удалять их нельзя. Общий кеш загрузок npm, обычно расположенный в ~/.npm, относится к другой категории и используется сразу несколькими проектами. |
| Убедитесь, что зависимости действительно восстановимы | package.json + lock-файл + конфигурация workspaces | Lock-файл делает разрешение зависимостей предсказуемым, но не хранит сами пакеты. Проверьте версию менеджера, учётные данные приватных реестров, VPN, доступ к зависимостям Git и file:, локальным пакетам workspaces, внешним загрузкам и инструментам сборки нативных модулей. npm v12 больше не читает npm-shrinkwrap.json: если в старом проекте это единственный lock-файл, переименуйте его в package-lock.json. Никогда не перезаписывайте уже существующий package-lock.json — сначала отдельно сравните и согласуйте оба файла. Правки, внесённые только в node_modules, после удаления исчезнут. |
| Удалите только одну проверенную папку зависимостей | Корзина / переустановка менеджером пакетов | Находясь в проверенном корне проекта, переместите с помощью Finder в Корзину только node_modules, но не родительский репозиторий. Команда rm -rf ./node_modules минует Корзину и удаляет необратимо, поэтому сначала проверьте корень командой pwd. Не подставляйте в rm -rf непроверенный вывод find, маску или переменную. Если package-lock.json — основной lock-файл, используйте npm ci; для pnpm, Yarn или Bun применяйте закреплённый в репозитории менеджер и режим, запрещающий изменение lock-файла. В монорепозитории начинайте с корневого lock-файла и рассматривайте все workspaces как единую систему зависимостей. |
| Переустановите зависимости и проверьте весь проект | сборка + тесты + запуск приложения | Успешная установка ещё не доказывает, что проект восстановлен. Запустите предусмотренные репозиторием команды сборки, тестов, линтинга и запуска: нативные модули и скрипты жизненного цикла могут сломаться после смены Node.js, macOS или инструментов. Восстановление потребует загрузки и распаковки пакетов, создания ссылок, запуска скриптов и иногда компиляции. При ошибке верните папку из Корзины и проверьте доступ, сеть, версии и lock-файл, прежде чем чистить следующий проект. |
Частые вопросы
Безопасно ли удалять node_modules на Mac?
Обычно да, если сохранены package.json, принятый lock-файл, конфигурация workspaces, исходный код и все источники зависимостей. Но до переустановки и проверки проект не будет запускаться или собираться.
Нужно ли удалять package-lock.json вместе с node_modules?
Нет. package-lock.json нужен npm для воспроизводимого разрешения. npm v12 больше не читает npm-shrinkwrap.json: если это единственный lock-файл старого проекта, переименуйте его в package-lock.json, но никогда не перезаписывайте уже существующий package-lock.json.
node_modules и кеш npm — одно и то же?
Нет. node_modules содержит установленные зависимости одного проекта, а общий кеш npm обычно находится в ~/.npm. Удаление одного не затрагивает другое: в первом случае перестаёт работать один проект, во втором повторные загрузки могут потребоваться многим проектам.
Источники