TL;DR
Qué: Gestor de paquetes rápido y eficiente en espacio de disco para Node.js.
Por qué: 2x más rápido que npm, ahorra espacio en disco, dependencias estrictas, excelente soporte monorepo.
Quick Start
Instalar:
# npm
npm install -g pnpm
# Homebrew
brew install pnpm
# Check version
pnpm --version
Uso básico:
pnpm init
pnpm add express
pnpm install
pnpm dev
Cheatsheet
| Comando | Descripción |
|---|---|
pnpm add pkg | Añadir dependencia |
pnpm add -D pkg | Añadir dependencia dev |
pnpm remove pkg | Eliminar paquete |
pnpm install | Instalar todas las deps |
pnpm update | Actualizar paquetes |
pnpm run script | Ejecutar script |
pnpm dlx pkg | Ejecutar paquete (como npx) |
Gotchas
Instalar paquetes
# Production dependency
pnpm add express
# Dev dependency
pnpm add -D typescript
# Global package
pnpm add -g nodemon
# Specific version
pnpm add [email protected]
# From workspace
pnpm add @myorg/shared --filter @myorg/web
Workspaces (monorepo)
# pnpm-workspace.yaml
packages:
- 'packages/*'
- 'apps/*'
# Install all workspace deps
pnpm install
# Run script in specific package
pnpm --filter @myorg/web dev
# Run in all packages
pnpm -r run build
# Add dep to specific package
pnpm add lodash --filter @myorg/utils
# Add workspace dependency
pnpm add @myorg/shared --filter @myorg/web --workspace
Filtrado
# By package name
pnpm --filter @myorg/web dev
# By directory
pnpm --filter ./packages/web dev
# All packages
pnpm -r run test
# Packages with changes
pnpm --filter "...[origin/main]" run test
# Dependencies of package
pnpm --filter "@myorg/web..." run build
Configuración (.npmrc)
# Strict mode (recommended)
strict-peer-dependencies=true
auto-install-peers=true
# Shamefully hoist (compatibility mode)
shamefully-hoist=true
# Store location
store-dir=~/.pnpm-store
# Registry
registry=https://registry.npmmirror.com
Migración desde npm/yarn
# Import from package-lock.json
pnpm import
# Or just delete and reinstall
rm -rf node_modules package-lock.json yarn.lock
pnpm install
Scripts
{
"scripts": {
"dev": "vite",
"build": "tsc && vite build",
"test": "vitest"
}
}
# Run script
pnpm dev
pnpm run build
# Run binary
pnpm exec vitest
# Execute package without installing
pnpm dlx create-react-app my-app
Next Steps
- pnpm Documentation - Documentación oficial
- Workspaces - Guía monorepo
- Filtering - Selección de paquetes
- pnpm vs npm vs yarn - Benchmarks