Skip to content
Latchkey

O que é o pnpm? O gerenciador de pacotes rápido e eficiente em disco

O pnpm é um gerenciador de pacotes do Node.js que armazena cada versão de pacote uma única vez em disco e a vincula por hard link aos projetos, tornando as instalações rápidas e econômicas em espaço.

O pnpm é uma alternativa mais rápida e mais eficiente em disco ao npm e ao Yarn que lê o mesmo package.json. Seu truque definidor é um armazenamento global endereçado por conteúdo: cada versão de pacote é baixada uma vez e vinculada a muitos projetos em vez de copiada, então uma instalação nova costuma ser apenas a criação de links.

O que é o pnpm

O pnpm ("performant npm") é um gerenciador de pacotes de linha de comando para o ecossistema Node.js. Ele oferece suporte a workspaces para monorepos, um layout estrito de node_modules que impede o acesso a dependências não declaradas e a mesma reprodutibilidade orientada por lockfile que os usuários esperam.

Como o armazenamento funciona

Quando o pnpm instala um pacote, ele coloca os arquivos em um armazenamento global na sua máquina e os vincula por hard link ao node_modules do projeto. Dois projetos no mesmo disco que precisam da mesma versão compartilham os bytes. É por isso que as instalações do pnpm são rápidas e usam uma fração do disco que a cópia usaria, especialmente em monorepos.

Um exemplo de uso

O pnpm espelha de perto os comandos do npm, então a adoção é em grande parte memória muscular.

Common pnpm commands
# install from the lockfile (use in CI)
pnpm install --frozen-lockfile

# add a dependency
pnpm add lodash

# run a workspace package script
pnpm --filter web build

Papel em CI/CD

Na CI, "pnpm install --frozen-lockfile" oferece instalações reproduzíveis e falha se o lockfile estiver desatualizado. Fazer cache do armazenamento do pnpm entre execuções é altamente eficaz porque o armazenamento é compartilhado e endereçado por conteúdo. Em monorepos grandes, os tempos de instalação do pnpm e a economia de disco representam uma redução significativa no custo de CI. Em runners gerenciados como o Latchkey, um cache aquecido do armazenamento do pnpm mais a repetição automática em falhas transitórias do registro mantêm essas instalações rápidas e confiáveis.

Alternativas

O npm é o padrão e não precisa de instalação, mas é mais lento em árvores grandes. O Yarn (especialmente o Berry) oferece Plug and Play e zero-installs. O pnpm vence onde a velocidade de instalação, o uso de disco e o isolamento estrito de dependências importam mais.

Principais conclusões

  • O pnpm vincula pacotes a partir de um armazenamento compartilhado endereçado por conteúdo em vez de copiá-los.
  • Isso torna as instalações rápidas e reduz drasticamente o uso de disco em monorepos.
  • Use "pnpm install --frozen-lockfile" na CI e faça cache do armazenamento global.

Guias relacionados