Pular para o conteúdo principal
Version: 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 salva no disco. Com o pnpm, a dependência será armazenada em uma store que pode ser endereçável por seu conteúdo, 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ê economiza muito espaço em seu disco proporcional ao número de projetos e dependências e tem instalações muito mais rápidas!

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

Ao instalar dependências com o npm, todos os pacotes são içados para a raiz do módulos. Como resultado, o código fonte tem acesso a dependências que não são adicionadas como dependências do projeto.

pnpm usa symlinks (links simbólicos) para adicionar apenas as dependências diretas do projeto à raiz do diretório de módulos. Se você quiser mais detalhes sobre a estrutura única que o pnpm cria para o node_modules e por que funciona bem com o ecossistema.js Node, leia: