Два инструмента — две модели кэширования
npm держит контентно-адресуемый кэш в %LOCALAPPDATA%\npm-cache: каждый когда-либо скачанный tarball, плюс логи и кэш _npx для одноразовых запусков пакетов. Для работы установленных проектов всё это не нужно — кэш существует только ради скорости будущих установок и офлайна. pnpm устроен иначе: единый стор (в свежих версиях — %LOCALAPPDATA%\pnpm\store) хранит настоящие файлы, а каждая папка node_modules в каждом проекте собрана из жёстких ссылок на него. Поэтому проекты на pnpm не размножают расход диска, как на npm, — и поэтому сам стор растёт без предела: каждая новая версия пакета оседает там навсегда, пока вы не почистите.
Отсюда и знакомый сюрприз: вы удалили старый проект, а место не вернулось — жёсткие ссылки в сторе держат данные живыми. Смотреть надо на стор, а не на папки проектов.
Команды очистки, которые стоит знать
Всё здесь безопасно по определению: кэши на то и кэши, инструменты отстроят их по требованию:
- npm cache clean --force — сносит весь кэш npm; следующие установки скачают нужное заново
- npm cache verify — мягкий вариант: сборка мусора и проверка целостности вместо тотального сноса
- pnpm store prune — убирает из стора пакеты, на которые больше не ссылается ни один проект
- Удалите %LOCALAPPDATA%\npm-cache\_npx — одноразовые кэши запусков npx, всегда безопасно
- npm config set cache D:\dev\npm-cache — навсегда перенесите кэш с SSD на диск для данных
- Сначала посмотрите размеры: скан AppData лучше слепого удаления — npm-cache и стор pnpm обычно и есть два главных подозреваемых
Подводный камень жёстких связей NTFS
Вот что сбивает с толку всех: на NTFS данные файла освобождаются, только когда исчезает последняя жёсткая ссылка на него. Удалить стор pnpm сразу после зачистки node_modules — и место вернётся, как ожидалось. Удалить стор, пока проекты ещё ссылаются на его файлы, — не освободит ничего: байты останутся на диске, пока существует node_modules, а Explorer продолжит показывать записи стора, которые фактически пустые. Порядок важен: сначала уберите проекты (или их node_modules), потом запускайте pnpm store prune. CI-раннеры и машины, гоняющие много репозиториев, получают от ежемесячной чистки максимум; на ноутбуке с одним проектом стор редко заслуживает внимания.
Вопросы и ответы
Можно ли удалить папку npm-cache в AppData?
Да. Там лежат только скачанные архивы и логи; npm скачает нужное при следующей установке. Используйте npm cache clean --force или просто удалите папку.
Где pnpm store находится в Windows?
В свежих версиях pnpm — в %LOCALAPPDATA%\pnpm\store; точный путь подскажет команда pnpm store path. Чистите через pnpm store prune, а не удалением папок вручную.
Понятно до покупки: что входит в лицензию
Разовый 30-минутный триал даёт доступ к базовым инструментам. Возможности с меткой PRO остаются закрыты до активации платной лицензии.
Читайте также
Написать нам: [email protected]