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