pnpm — Performant Node Package Manager
Visão Geral
- pnpm (Performant NPM) é um gerenciador de pacotes para Node.js, eficiente em termos de velocidade e uso de disco. :contentReference[oaicite:1]{index=1}
- Utiliza um sistema de armazenamento global e baseado em conteúdo (content-addressable storage), onde dependências são vinculadas (hard links/symlinks), economizando espaço e acelerando instalações. :contentReference[oaicite:2]{index=2}
- Ideal para monorepos, com instalação rigorosa (“strict”) — só acessa dependências declaradas no
package.json. :contentReference[oaicite:3]{index=3}
Motivos para Usar
- Instalações até 2× mais rápidas que npm ou Yarn. :contentReference[oaicite:4]{index=4}
- Economia significativa de espaço em disco, especialmente com múltiplos projetos. :contentReference[oaicite:5]{index=5}
- Organização mais limpa de
node_modules, evitando bugs por dependências implícitas. :contentReference[oaicite:6]{index=6}
Instalação
Pré-requisitos
- É necessário ter Node.js ≥ v18.12 ou usar a versão standalone. :contentReference[oaicite:7]{index=7}
Métodos de instalação
- Standalone script:
- POSIX:
curl -fsSL https://get.pnpm.io/install.sh | sh - Windows (PowerShell):
Invoke-WebRequest https://get.pnpm.io/install.ps1 -UseBasicParsing | Invoke-Expression:contentReference[oaicite:8]{index=8}
- POSIX:
- Corepack (recomendado com Node.js modernos):
corepack enable pnpmcorepack use pnpm@latest-10(fixa versão nopackage.json) :contentReference[oaicite:9]{index=9}
- Outras opções: npm, Homebrew, winget, Scoop, Chocolatey, Volta. :contentReference[oaicite:10]{index=10}
Comandos Básicos
pnpm install(oupnpm i): instala todas as dependências. Em CI, falha se o lockfile estiver desatualizado. :contentReference[oaicite:11]{index=11}- Exemplos de flags úteis:
--offline,--frozen-lockfile,--lockfile-only,--force:contentReference[oaicite:12]{index=12}
- Exemplos de flags úteis:
pnpm add <pacote>: instala dependência. Por padrão, comodependencies; há flags-D(dev),-O(optional),-g(global), versão específica etc. :contentReference[oaicite:13]{index=13}- Comandos compatíveis com npm:
pnpm run <script>, ou diretamentepnpm <script>;pnpm add,pnpm installetc. :contentReference[oaicite:14]{index=14}
Configuração e Workspaces
- Arquivo
pnpm-workspace.yamle configs globais compnpm config. :contentReference[oaicite:15]{index=15} - Recursos úteis:
- overrides: forçar versões/resolver dependências específicas. :contentReference[oaicite:16]{index=16}
- packageExtensions: corrigir pacotes (ex: adicionar
peerDependencies). :contentReference[oaicite:17]{index=17} - sharedWorkspaceLockfile: unifica o
pnpm-lock.yamlno root de monorepo, mantendo singleton de dependências. :contentReference[oaicite:18]{index=18} - Outras opções:
linkWorkspacePackages,useNodeVersion,peerDependencyRulesetc. :contentReference[oaicite:19]{index=19}
Resumo rápido:
- O que é: gerenciador de pacotes rápido e eficiente para Node.js.
- Diferencial: uso otimizado de disco e instalação em camadas.
- Vantagens: performance, economia de espaço, confiabilidade.
- Uso: instalação flexível, comandos similares ao npm.
- Configuração: ideal para monorepos, com recursos avançados via config.