Как очистить node_modules с помощью npkill
Node.js — среда выполнения JavaScript вне браузера, часто используемая для серверных приложений, CLI-инструментов и утилит. Большая часть экосистемы строится вокруг пакетов NPM, а их зависимости и установленные пакеты обычно находятся в папке node_modules. Со временем такие папки могут занимать десятки гигабайт, особенно если у вас много проектов.
Этот материал объяснит, что такое npkill, как безопасно им пользоваться, какие есть альтернативы и какие предосторожности соблюдать.
Что такое npkill и зачем он нужен
npkill — это небольшая утилита (пакет NPM), которая сканирует файловую систему в поисках папок node_modules, показывает их размер и позволяет интерактивно удалять ненужные каталоги.
Ключевые факты:
- Не требует установки, если запускать через
npx. - Работает интерактивно в терминале: вверх/вниз — навигация, Space — удалить, Q или Ctrl+C — выход.
- Удаляет только выбранные папки; сама утилита не меняет package.json.
Требования: Node.js и npm должны быть установлены на компьютере.
Пример запуска:
npx npkillПошаговая инструкция по использованию
- Откройте терминал в корне той папки, откуда хотите начать сканирование (обычно домашняя директория или папка с проектами).
- Выполните:
npx npkill- Подождите, пока утилита просканирует дерево каталогов и отобразит список папок
node_modulesс их размерами и путями. - Перемещайтесь по списку стрелками вверх/вниз. Выделите строку и нажмите Space, чтобы удалить соответствующую папку.
- Для выхода нажмите Q или Ctrl + C.
Альтернатива: если вы предпочитаете глобальную установку, можно установить npkill один раз командой npm i -g npkill и запускать npkill напрямую.
Когда удаление безопасно и когда нужно быть осторожным
Важно:
- Удаление
node_modulesу активного проекта не повредит коду, но перед повторным запуском приложения нужно будет выполнитьnpm installилиnpm ci. - Если вы работаете с проектом, где изменения зависимостей фиксируются в lock-файлах (
package-lock.json,yarn.lock), удаление безопасно — пакеты будут восстановлены при установке. - Не удаляйте папку в проектах, где есть незакоммиченные изменения, пока вы не уверены, что сможете восстановить окружение.
Критерии, чтобы считать удаление безопасным:
- Проект закоммичен, либо есть резервная копия.
- В репозитории есть lock-файл или CI‑скрипт, который автоматически восстанавливает зависимости.
- Вы понимаете, что после удаления потребуется повторная установка зависимостей.
Мини‑методология: как очистить дисковое пространство поэтапно
- Сканируйте крупные директории (домашняя папка, папка проектов).
- Отсортируйте результаты по размеру и определите топ‑N кандидатур на удаление.
- Проверьте статус проектов: git status, наличие lock-файлов, CI.
- Удалите неактуальные
node_modulesчерез npkill. - При необходимости восстановите зависимости в оставшихся проектах с помощью
npm ciилиnpm install.
Пример команд для восстановления:
cd path/to/project
npm ciАльтернативные подходы и инструменты
- npm cache clean –force — очищает кэш npm, но не трогает
node_modules. - Использовать специализированные скрипты, которые находят большие папки и выводят их в виде отчёта (например, du + sort на UNIX-системах).
- Dockerd and container builds: держать зависимости внутри контейнеров, чтобы не засорять локальную файловую систему.
Когда npkill не подходит:
- Если нужно тонкое управление версиями пакетов по проектам (npkill удаляет целиком). Тогда лучше использовать виртуальные среды или контейнеры.
- В средах с ограниченным доступом/правами админа, где интерактивные утилиты не запускаются.
Откат и восстановление (инцидентный план)
Если вы случайно удалили node_modules в проекте, выполните:
- Перейдите в папку проекта:
cd /path/to/project. - Проверьте наличие
package-lock.jsonилиyarn.lock. - Выполните
npm ci(предпочтительно, если есть lock-файл) илиnpm install. - Если зависимостей нет в lock-файле, используйте резервную копию репозитория:
git checkout -- package.json package-lock.json.
Важно: файлы исходного кода не удаляются при удалении node_modules, поэтому код проекта остаётся в безопасности.
Чек-лист по ролям
Разработчик:
- Убедиться, что все изменения закоммичены.
- Проверить наличие lock-файла.
- Запустить
npx npkillи удалить только неактуальные проекты.
DevOps / Системный администратор:
- Планировать периодические прогоны в общих директориях разработки.
- Настроить политики резервного копирования.
Владелец проекта:
- Проверить, что CI может восстановить окружение автоматически.
- Сообщить команде о плановой очистке, если это влияет на ресурсы.
Примеры ошибок и когда npkill может ошибаться
- Символические ссылки и монорепозитории: npkill может найти и предложить удалить папки, которые используются другими проектами через symlink. Проверьте структуру репозиториев перед удалением.
- SSD с быстрым доступом: удаление может занять заметное время, но восстановление тоже потребует загрузки пакетов из сети.
Рекомендации по безопасности и приватности
- npkill удаляет локальные файлы и не отправляет информацию в интернет.
- Всё же перед массовыми удалениями лучше иметь резервную копию важных проектов.
Часто задаваемые вопросы
Нужно ли устанавливать npkill глобально?
Нет, достаточно npx npkill. Глобальная установка (npm i -g npkill) удобна, если вы используете утилиту часто.
Можно ли автоматизировать очистку?
Да, можно писать скрипты, которые запускают npkill в неинтерактивном режиме или использовать системные планировщики вместе с фильтрацией по размеру и времени модификации.
Как восстановить удалённые зависимости?
Перейдите в каталог проекта и выполните npm ci (при наличии lock-файла) или npm install.
Резюме
npkill — простой, безопасный и полезный инструмент для очистки node_modules, когда нужно быстро вернуть дисковое пространство. Запуск через npx минимизирует необходимость устанавливать дополнительные пакеты. Всегда проверяйте состояние репозиториев и резервные механизмы перед массовым удалением.
Краткие рекомендации:
- Всегда проверяйте git‑статус перед удалением.
- Предпочитайте
npm ciдля восстановления окружения. - Рассмотрите контейнеризацию или использование виртуальных сред для долгосрочного управления зависимостями.
Похожие материалы
RDP: полный гид по настройке и безопасности
Android как клавиатура и трекпад для Windows
Советы и приёмы для работы с PDF
Calibration в Lightroom Classic: как и когда использовать
Отключить Siri Suggestions на iPhone