Skip to main content
Version: 5.x

Мотивация

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

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

  1. Если вы зависите от различных версий зависимости, в сторейдж добавляются только файлы, которые отличаются друг от друга. For instance, if it has 100 files, and a new version has a change in only one of those files, pnpm update will only add 1 new file to the store, instead of cloning the entire dependency just for the singular change.
  2. Все файлы сохраняются в одном месте на диске. When packages are installed, their files are hard-linked from that single place, consuming no additional disk space. This allows you to share dependencies of the same version across projects.

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

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

When installing dependencies with npm, all packages are hoisted to the root of the modules directory. As a result, source code has access to dependencies that are not added as dependencies to the project.

pnpm uses symlinks to add only the direct dependencies of the project into the root of the modules directory. If you'd like more details about the unique node_modules structure that pnpm creates and why it works fine with the Node.js ecosystem, read: