Перейти к основному содержимому
Version: 5.x

Мотивация

Экономия места на диске и повышение скорости установки#

При использовании npm или Yarn, если у вас есть 100 проектов, использующих зависимость, у вас будет сохраненных на диске 100 копий этой зависимости. С pnpm зависимость будет храниться в хранилище с адресацией по содержимому, поэтому:

  1. Если вы зависите от различных версий зависимости, в хранилище добавляются только файлы, которые отличаются друг от друга. Например, если у зависимости 100 файлов, и новая версия зависимости имеет изменение только в одном из этих файлов, pnpm update добавит только 1 новый файл в хранилище, вместо копирования всей новой версии зависимости.
  2. Все файлы сохраняются в одном месте на диске. Когда пакеты устанавливаются, их файлы линкуются из этого единого хранилища и не потребляют дополнительного дискового пространства. Это позволяет делиться зависимостями одной и той же версии между проектами.

В результате вы экономите много места на вашем диске пропорционально количеству проектов и зависимостей, и вы получаете намного более быструю установку!

Создание не плоского каталога node_modules#

При установке зависимостей с помощью npm, все пакеты поднимаются в корень каталога модулей. В результате исходный код имеет доступ к зависимостям, которые не обозначены как прямые зависимости проекта.

pnpm использует символические ссылки для добавления только прямых зависимостей проекта в корень каталога модулей. Если вы хотите получить более подробную информацию об уникальной структуре node_modules , создаваемой pnpm и как она работает с экосистемой Node.js: