pnpm Package Manager Cheat Sheet
Quick reference guide for pnpm: Workspace filters, monorepo commands, lockfile management, and store.
Package Managers
pnpm
package-manager
monorepo
pnpm is a fast, disk-space-efficient package manager for JavaScript and Node.js projects using content-addressable hard links.
Workspace Configuration (`pnpm-workspace.yaml`)
yaml
packages:
- "apps/*"
- "packages/*"
- "!**/test/**"
Essential `pnpm` CLI Commands
Table
| Command | Action / Purpose |
|---|---|
pnpm install | Install all dependencies listed in package.json |
pnpm add lodash | Add lodash dependency to current package |
pnpm add -D vitest | Add vitest as devDependency |
pnpm remove express | Uninstall package dependency |
pnpm update --latest | Interactive dependency update wizard for latest package versions |
pnpm run dev | Execute script command declared in package.json |
Monorepo & Workspace Filtering (`--filter`)
bash
# Run build command ONLY in @app/web workspace package
pnpm --filter @app/web run build
# Run tests in all packages modified since main branch
pnpm --filter "...[origin/main]" test
# Add dependency to specific workspace package
pnpm --filter @app/api add jsonwebtoken
# Run script recursively across ALL workspace packages
pnpm -r run lint
Global Store & Maintenance
Table
| Command | Purpose |
|---|---|
pnpm store path | Print absolute directory path of global pnpm content-addressable store |
pnpm store prune | Remove unreferenced, orphaned package files from global store |
pnpm audit | Check installed packages for known security vulnerabilities |
Common Pitfalls & Tips
[!WARNING] pnpm enforces strict dependency isolation! A package cannot import an undeclared transitive dependency unless explicitly added to its own
package.json.
[!TIP] Use
pnpm importto generatepnpm-lock.yamlautomatically when migrating existing projects from npmpackage-lock.jsonor Yarnyarn.lock.