Motivação
Economizando espaço em disco e melhorando 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:
- Se você depender de diferentes versões da dependência, apenas os arquivos diferentes serão armazenados. Por exemplo, se ela tiver 100 arquivos e uma nova versão haver uma alteração em apenas um desses arquivos, o comando
pnpm update
armazenará apenas 1 novo arquivo, ao invés de clonar toda a dependência apenas para uma mudança única. - Todos os arquivos são armazenados em um único local do disco. Quando os pacotes são instalados, seus arquivos são vinculados a partir desse local único, não consumindo espaço adicional em disco. Isso permique que você compartilhe a mesma versão de dependências entre diversos 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!
Criando um diretório node_modules não plano
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:
- node_modules planos não são a única maneira
- Estrutura da node_modules com links simbólicos (Symlinked)
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.