Pular para o conteúdo principal
Version: 6.x

Motivação

Economizando espaço em disco e aumentando a velocidade de instalação

When using npm or Yarn, if you have 100 projects using a dependency, you will have 100 copies of that dependency saved on disk. With pnpm, the dependency will be stored in a content-addressable store, so:

  1. Se você depende de diferentes versões da dependência, apenas os arquivos que diferem são adicionados à store. Por exemplo, se ele tiver 100 arquivos, e uma nova versão tiver uma alteração em apenas um desses arquivos, o pnpm update adicionará apenas 1 novo arquivo à store, em vez de clonar toda a dependência por causa de uma simples mudança.
  2. Todos os arquivos são salvos em um único lugar no disco. Quando os pacotes são instalados, seus arquivos são vinculados a partir desse único local, não consumindo espaço adicional em disco. Isso permite que você compartilhe dependências da mesma versão entre projetos.

As a result, you save a lot of space on your disk proportional to the number of projects and dependencies, and you have a lot faster installations!

Criação de um diretório node_modules non-flat

When installing dependencies with npm or Yarn Classic, 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.

By default, 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:

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.