pnpm store prune: как очистить кэш pnpm на Mac

Очистить кэш pnpm на Mac командой pnpm store prune — не то же самое, что очистить кэш npm: pnpm хранит каждый пакет один раз, в общем хранилище, к которому подключены ваши проекты, и при очистке удаляются только пакеты, которые ни одному проекту больше не нужны. Проекты от этого не страдают, а если какому-то из них удалённый пакет понадобится, pnpm скачает его заново. Ещё здесь — где лежит хранилище и что делать с папками хранилища от старых версий pnpm.

MacWashing, раздел «Сборка мусора»: найдены мусор Xcode, пользовательский кэш, установщики и журналы, к очистке 22,83 ГБ
  1. Откройте MacWashing и выберите Сборка мусора в боковом меню.
  2. Нажмите Начать сканирование.
  3. Просмотрите находки и нажмите Очистить. Всё спорное остаётся без галочки.

Бесплатная пробная версия · macOS 14 и новее

Где pnpm хранит пакеты

pnpm хранит каждую версию пакета один раз, в своём хранилище, и подключает файлы в node_modules каждого проекта жёсткими ссылками. Поэтому проекты на pnpm занимают меньше места, чем на npm. На Mac хранилище лежит в ~/Library/pnpm/store, а эта команда показывает папку, которая используется сейчас:

pnpm store path
Терминал: pnpm store path выводит используемую папку хранилища

Ещё у pnpm есть кэш поменьше в ~/Library/Caches/pnpm: сведения о пакетах, кэш pnpm dlx и результаты некоторых проверок установки.

Как очистить кэш pnpm командой pnpm store prune

Эта команда удаляет пакеты, которыми не пользуется ни один проект, и показывает, сколько удалила. По документации pnpm она безвредна и никак не влияет на проекты:

pnpm store prune
Терминал: pnpm store prune сообщает, сколько пакетов удалено

Не запускайте её слишком часто. Если вы переключите проект на ветку со старыми зависимостями, pnpm придётся скачать их снова, и установка пройдёт медленнее.

Хранилища старых версий pnpm

Внутри ~/Library/pnpm/store у каждого формата хранилища своя папка, например v3, v10 или v11. pnpm store path показывает ту, которой пользуется ваш pnpm, и pnpm store prune чистит только её.

  1. В Finder выберите Переход › Переход к папке (Shift-Command-G), введите ~/Library/pnpm/store и нажмите Return.
Панель «Переход к папке» с введённым ~/Library/pnpm/store
  1. Сравните папки с последней частью пути, который вывела pnpm store path.
  2. Переместите папки старых версий в Корзину, если ни один ваш проект больше не работает со старым pnpm.
Finder, папка хранилища pnpm: контекстное меню старого хранилища v3 с пунктом «Переместить в Корзину»

Не удаляйте папку, которой pnpm пользуется сейчас. Её файлы связаны жёсткими ссылками с вашими проектами, поэтому места освободится намного меньше, чем показывает Finder, а следующая установка в каждом проекте скачает все пакеты заново.

Что останется после очистки

  • Ваши проекты, их node_modules и pnpm-lock.yaml.
  • Все пакеты, которыми ещё пользуется хоть один проект на Mac.
  • Сам pnpm и его настройки.

У npm и Yarn свой кэш: см. как очистить кэш npm и как очистить кэш Yarn.

А с MacWashing это в один клик

MacWashing, раздел «Сборка мусора»: найдены мусор Xcode, пользовательский кэш, установщики и журналы, к очистке 22,83 ГБ

Сборка мусора в MacWashing находит кэш pnpm по названию в разделе «Кэш программ», рядом с кэшем npm, Yarn и других инструментов разработчика, и очищает его вместе с кэшем остальных программ.

Бесплатная пробная версия · macOS 14 и новее

Вопросы и ответы

Удалит ли MacWashing мои файлы при очистке?

Нет. Он удаляет только то, что может сопоставить с известной программой или известным видом мусора, и только там, где программы оставляют файлы; macOS и файлы Apple не затрагиваются. Всё спорное помечено и остаётся без галочки, пока вы не решите.

Что будет с открытыми программами?

Если файлы заняты открытой программой, MacWashing подождёт, пока она закроется, или закроет её по вашей команде, а после очистки откроет снова.

Это бесплатно?

Да, в пробном режиме: Сборка мусора и Деинсталлятор вместе освобождают до 25 ГБ, без аккаунта и карты.

Безопасно ли выполнять pnpm store prune?

Да. Она удаляет только пакеты, которыми не пользуется ни один проект. Если какой-то из них понадобится позже, pnpm скачает его снова.

Освободится ли место, если удалить проект?

Не сразу. Его пакеты остаются в хранилище, пока вы не выполните pnpm store prune. Запускайте её после удаления старых проектов или их node_modules.

Где кэш pnpm на Mac?

Пакеты лежат в ~/Library/pnpm/store, а кэш сведений о пакетах поменьше — в ~/Library/Caches/pnpm. Какое хранилище используется, покажет pnpm store path.