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.
Por que pnpm?
pnpm install e significativamente mais rapido que o npm install, especialmente a partir da segunda vez.package.json, voce nao consegue importar. Isso evita bugs sutis em producao.pnpm aceita os mesmos comandos que o npm. Se voce sabe usar npm, ja sabe usar pnpm. A transicao e praticamente transparente.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 - Tabela de equivalencia: npm vs pnpm
| npm | pnpm | O que faz |
|---|---|---|
npm install | pnpm install | Instala todas as dependencias |
npm install pacote | pnpm add pacote | Adiciona uma dependencia |
npm run dev | pnpm dev | Executa um script |
npm run build | pnpm build | Executa um script |
npx comando | pnpm dlx comando | Executa um pacote sem instalar |
npm uninstall pacote | pnpm remove pacote | Remove uma dependencia |
run nos scripts. Em vez de pnpm run dev, basta pnpm dev. Menos digitacao, mesmo resultado.Resumo
| Conceito | Descricao |
|---|---|
| pnpm | Gerenciador de pacotes rapido e eficiente |
| Content-addressable store | Armazem central que evita duplicacao de pacotes |
| Phantom dependencies | Bug que o pnpm previne e o npm permite |
| corepack | Forma recomendada de instalar o pnpm |
| pnpm dlx | Equivalente ao npx para executar pacotes avulsos |
Proxima aula: 1.5 — TypeScript ou JavaScript: o que escolher