1.4 — Por que usamos pnpm neste curso

Entenda o que e o pnpm, por que ele e melhor que o npm para projetos modernos e como instala-lo.

Objetivos da Aula

  • Entender o que e um gerenciador de pacotes
  • Conhecer as diferencas entre npm, pnpm, yarn e bun
  • Saber por que escolhemos pnpm para este curso
  • Instalar e configurar o pnpm

O que e um gerenciador de pacotes?

Quando voce cria um projeto JavaScript, ele depende de dezenas (as vezes centenas) de bibliotecas externas. Um gerenciador de pacotes cuida de:

  • Baixar essas bibliotecas
  • Organizar elas no seu projeto (pasta node_modules)
  • Controlar versoes para garantir que todos usem a mesma versao
  • Executar scripts definidos no package.json

O Node.js ja vem com o npm (Node Package Manager). Mas existem alternativas que fazem o mesmo trabalho de formas diferentes.


npm vs pnpm: a diferenca na pratica

O problema do npm

Quando voce roda npm install, o npm copia todas as dependencias para a pasta node_modules do projeto. Se voce tem 10 projetos que usam o React, o npm guarda 10 copias identicas do React no seu disco.

A solucao do pnpm

O pnpm usa uma abordagem diferente chamada content-addressable storage. Em vez de copiar, ele guarda uma unica copia de cada pacote em um armazem central e cria links para os projetos que precisam dele.

npm
projeto-a/node_modules/svelte/ (copia)
projeto-b/node_modules/svelte/ (copia)
projeto-c/node_modules/svelte/ (copia)
3 copias = 3x espaco em disco
pnpm
~/.pnpm-store/svelte/ (unica copia)
projeto-a/node_modules/svelte/ → link
projeto-b/node_modules/svelte/ → link
1 copia + links = economia de disco

Por que pnpm?

RAPIDO
Instalacao ate 2x mais rapida
Como reutiliza pacotes ja baixados, o pnpm install e significativamente mais rapido que o npm install, especialmente a partir da segunda vez.
LEVE
Economia de espaco em disco
Se voce trabalha em varios projetos, o pnpm pode economizar gigabytes de espaco. Cada pacote e armazenado uma unica vez no seu computador.
SEGURO
Resolucao estrita de dependencias
O npm permite que seu codigo importe pacotes que voce nao declarou como dependencia (phantom dependencies). O pnpm impede isso — se nao esta no seu package.json, voce nao consegue importar. Isso evita bugs sutis em producao.
COMPATIVEL
Mesmos comandos, mesma experiencia
O pnpm aceita os mesmos comandos que o npm. Se voce sabe usar npm, ja sabe usar pnpm. A transicao e praticamente transparente.
Posso usar npm se preferir?
Claro. Tudo que funciona com pnpm funciona com npm tambem. A diferenca esta na performance e organizacao das dependencias. Se voce ja tem um fluxo com npm e nao quer mudar agora, pode seguir o curso substituindo pnpm por npm run e pnpm dlx por npx.

Instalando o pnpm

A forma mais simples e usar o corepack, que ja vem com o Node.js 16.13+:

# Habilitar o corepack (uma unica vez)
corepack enable

# Verificar a instalacao
pnpm --version

Se preferir instalar de outra forma:

# Via npm (ironicamente)
npm install -g pnpm

# Via curl (macOS/Linux)
curl -fsSL https://get.pnpm.io/install.sh | sh -
Dica
Recomendamos o metodo com corepack. Alem de ser o mais simples, o corepack garante que cada projeto use a versao correta do gerenciador de pacotes automaticamente.

Tabela de equivalencia: npm vs pnpm

npmpnpmO que faz
npm installpnpm installInstala todas as dependencias
npm install pacotepnpm add pacoteAdiciona uma dependencia
npm run devpnpm devExecuta um script
npm run buildpnpm buildExecuta um script
npx comandopnpm dlx comandoExecuta um pacote sem instalar
npm uninstall pacotepnpm remove pacoteRemove uma dependencia
Dica
Com pnpm, voce pode omitir o run nos scripts. Em vez de pnpm run dev, basta pnpm dev. Menos digitacao, mesmo resultado.

Resumo

ConceitoDescricao
pnpmGerenciador de pacotes rapido e eficiente
Content-addressable storeArmazem central que evita duplicacao de pacotes
Phantom dependenciesBug que o pnpm previne e o npm permite
corepackForma recomendada de instalar o pnpm
pnpm dlxEquivalente ao npx para executar pacotes avulsos


Proxima aula: 1.5 — TypeScript ou JavaScript: o que escolher