Pular para o conteúdo principal
Versão: 6.x

Motivação

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

Ao usar npm ou Yarn, se você tiver 100 projetos usando uma dependência, você terá 100 cópias dessa dependência salvas em disco. Com pnpm, a dependência será armazenada em um armazenamento de conteúdo endereçável, então:

  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.

Como resultado, você otimiza muito espaço em seu disco proporcionalmente ao número de projetos e dependências, tendo assim instalações muito mais rápidas!

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

Ao instalar as dependências utilizando npm ou o clássico Yarn, todos os pacotes são diretamente ligados à raiz do diretório de módulos. Como resultado, o código-fonte tem acesso à dependências que não foram adicionadas ao projeto.

Por padrão, o pnpm utiliza symlinks (links simbólicos) para adicionar apenas as dependências ligadas diretamente à raiz do diretório de módulos. Se você deseja obter mais detalhes sobre a estrutura única da node_modules que o pnpm cria e por que ela funciona bem com o ecossistema Node.js, leia:

tip

Se suas ferramentas não funcionarem muito bem com symlinks (links simbólicos), você ainda pode usar pnpm e definir a configuração de node-linker para hoisted. Isso instruirá o pnpm a criar um diretório da node_modules semelhante aos criados pelo npm e o clássico Yarn.