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

Мотивация

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

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

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

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

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

When installing dependencies with npm or Yarn Classic, all packages are hoisted to the root of the modules directory. В результате исходный код имеет доступ к зависимостям, которые не обозначены как прямые зависимости проекта.

By default, pnpm uses symlinks to add only the direct dependencies of the project into the root of the modules directory. Если вы хотите получить более подробную информацию об уникальной структуре node_modules , создаваемой pnpm и как она работает с экосистемой Node.js:

tip

If your tooling doesn't work well with symlinks, you may still use pnpm and set the node-linker setting to hoisted. This will instruct pnpm to create a node_modules directory that is similar to those created by npm and Yarn Classic.