Skip to content
Latchkey

npm vs pnpm: qual gerenciador de pacotes Node para CI?

O pnpm troca o node_modules plano do npm por um store endereçado por conteúdo, e no CI isso normalmente significa installs mais rápidos e muito menos rotatividade de disco.

O npm é o gerenciador de pacotes padrão que vem com o Node. O pnpm usa um store global endereçável por conteúdo com hard links, o que acelera os installs, economiza disco e impõe uma resolução de dependências mais estrita.

npmpnpm
Velocidade de installBaselineMais rápido (store linkado)
Uso de discoCópia completa por projetoStore compartilhado, hard links
Lockfilepackage-lock.jsonpnpm-lock.yaml
Install no CInpm cipnpm install --frozen-lockfile
Suporte a monorepoWorkspaces (básico)Workspaces (robusto)

No CI

O pnpm instala mais rápido que o npm na maioria dos repos e corta o uso de disco através de seu store compartilhado, o que ajuda quando o cache ou o workspace é grande. Seu node_modules estrito e não plano também pega phantom dependencies que o npm permite silenciosamente. O npm continua sendo o padrão sem setup que toda imagem de CI e todo tutorial já assumem.

Faça cache do store

Chaveie seu cache de dependências no pnpm-lock.yaml (ou no package-lock.json para o npm) e faça cache do diretório do store do pnpm para o maior ganho de wall-clock. Qualquer um que você escolha roda igual nos runners de CI; runners gerenciados mais rápidos encurtam ainda mais a etapa de install.

O veredito

Quer installs mais rápidos, menos uso de disco e resolução mais estrita: pnpm. Quer o padrão universal sem setup: npm. De qualquer forma, faça commit do lockfile, use a flag de frozen install e faça cache do store.

Guias relacionados