AskCleanAskClean

Как удалить node_modules на Mac и не потерять проект

Команда AskClean · Обновлено 2026-08-05

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

Роботизированная рука переносит блок зависимостей из сети модулей в контейнер для утилизации; рядом лежат чертёж и замок
Удаляйте только папку с зависимостями, которую можно переустановить. Манифест, lock-файл, конфигурацию и исходный код нужно сохранить.

Отделите 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, после удаления исчезнут.

  1. В корне проекта выполните pwd и du -sh ./node_modules, затем запишите объём свободного места в macOS.
  2. Проверьте package.json, принятый lock-файл, конфигурацию workspaces и локальные изменения; для 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. Не подставляйте в 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_modulesnode_modules — установленное дерево зависимостей проекта. Его можно пересоздать, пока сохранены все исходные данные и доступны нужные пакеты, но до переустановки проект не запустится и не соберётся. package.json, lock-файл, исходный код, конфигурация, репозиторный .npmrc, патчи, настройки workspaces и история Git нужны для восстановления — удалять их нельзя. Общий кеш загрузок npm, обычно расположенный в ~/.npm, относится к другой категории и используется сразу несколькими проектами.
Убедитесь, что зависимости действительно восстановимыpackage.json + lock-файл + конфигурация workspacesLock-файл делает разрешение зависимостей предсказуемым, но не хранит сами пакеты. Проверьте версию менеджера, учётные данные приватных реестров, 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. Удаление одного не затрагивает другое: в первом случае перестаёт работать один проект, во втором повторные загрузки могут потребоваться многим проектам.

Источники

Другие руководства по хранилищу для разработчиков