PureTools

npm vs yarn vs pnpm: Qual Gerenciador de Pacotes em 2026?

PureTools Team· 7 min de leitura
npm vs yarn vs pnpm: Qual Gerenciador de Pacotes em 2026?

npm vs yarn vs pnpm: A Comparação Honesta

Os três instalam pacotes do registro npm. Os três usam package.json. As diferenças estão na velocidade, uso de disco e como lidam com a pasta node_modules.

Comparação Rápida

FeaturenpmYarn (v4)pnpm
Velocidade (cold install)Mais lentoRápidoMais rápido
Uso de discoDuplica pacotesPlug'n'Play (sem node_modules)Store endereçável por conteúdo (compartilhado)
MonorepoWorkspacesWorkspaces (melhor)Workspaces (melhor de todos)
RigidezHoista tudoEstrito por padrão (PnP)Estrito (sem phantom deps)
Vem com Node.jsSimVia CorepackInstalação separada
Lock filepackage-lock.jsonyarn.lockpnpm-lock.yaml

Comandos de Instalação

# Instalar todas as dependências
npm install          yarn install         pnpm install

# Adicionar um pacote
npm install express  yarn add express     pnpm add express

# Adicionar dev dependency
npm install -D jest  yarn add -D jest     pnpm add -D jest

# Remover um pacote
npm uninstall lodash yarn remove lodash   pnpm remove lodash

# Rodar um script
npm run dev          yarn dev             pnpm dev

# Executar um binário
npx create-next-app  yarn dlx create-next-app  pnpm dlx create-next-app

# Atualizar pacotes
npm update           yarn up              pnpm update

Por Que pnpm É Rápido

pnpm usa um store endereçável por conteúdo. Quando você instala lodash@4.17.21 no projeto A, ele é baixado uma vez para um store global. O projeto B que precisa da mesma versão recebe um hard link — sem duplicação. Isso significa:

  • Installs mais rápidos: Pacotes já no store não são baixados novamente
  • Menos espaço em disco: 100 projetos usando React não significam 100 cópias
  • node_modules estrito: Pacotes só podem acessar suas dependências declaradas (sem phantom dependencies)

Por Que Yarn PnP (Plug'n'Play)

Yarn pode eliminar node_modules inteiramente. Em vez disso, cria um arquivo .pnp.cjs que mapeia imports para arquivos zip em .yarn/cache/. Benefícios:

  • Zero installs: Commite o cache no git, CI não precisa instalar
  • Installs instantâneos: Sem operações de file system
  • Ressalva: Algumas ferramentas não suportam PnP e precisam de plugins de compatibilidade

Phantom Dependencies

npm e yarn classic "hoistam" dependências, permitindo que seu código importe pacotes que você não declarou no package.json. Funciona na sua máquina mas quebra quando aquela dependência transitiva é removida.

// Você nunca instalou 'glob' — é dep de outro pacote
import glob from 'glob'; // Funciona com npm (hoisted)
// Falha com pnpm (modo estrito) — força declarar corretamente

Qual Escolher

  • npm: Escolha padrão, funciona em todo lugar, bom o suficiente para a maioria
  • pnpm: Melhor para monorepos, CI com disco limitado, times que querem deps estritas
  • yarn: Se quer PnP/zero-installs ou seu time já usa

Honestamente? Escolha qualquer um e mantenha. As diferenças de velocidade são segundos, não minutos. Consistência no time importa mais que benchmarks.

Gerencie seus pacotes: Formatador JSON — formate e valide seus arquivos package.json.