pnpm

Essential pnpm commands for fast, disk-efficient Node.js package management.

cli
pnpmnodejspackage-managerjavascript

Installation

# Install pnpm
npm install -g pnpm

# Using corepack (Node.js 16.13+)
corepack enable
corepack prepare pnpm@latest --activate

# Check version
pnpm --version
pnpm -v

pnpm vs npm Commands

Taskpnpmnpm
Initialize projectpnpm initnpm init
Install dependenciespnpm installnpm install
Add packagepnpm add <pkg>npm install <pkg>
Add dev dependencypnpm add -D <pkg>npm install -D <pkg>
Add global packagepnpm add -g <pkg>npm install -g <pkg>
Remove packagepnpm remove <pkg>npm uninstall <pkg>
Update packagespnpm updatenpm update
Run scriptpnpm run <script>npm run <script>
Execute binarypnpm dlx <cmd>npx <cmd>
List packagespnpm listnpm ls
Check outdatedpnpm outdatednpm outdated
Run testspnpm testnpm test
Publish packagepnpm publishnpm publish
Audit securitypnpm auditnpm audit

Updating pnpm

# Update to latest version
pnpm self-update

# Update to specific version
pnpm self-update 9.0.0

# Update using npm
npm install -g pnpm@latest

# Update using corepack
corepack prepare pnpm@latest --activate

Node.js Version Management

# Install Node.js using pnpm env
pnpm env use --global <version>
pnpm env use --global 20
pnpm env use --global lts
pnpm env use --global latest

# Install specific version
pnpm env use --global 20.10.0

# List available remote Node.js versions
pnpm env list --remote
pnpm env ls --remote

# List available LTS versions
pnpm env list --remote lts

# List installed Node.js versions
pnpm env list
pnpm env ls

# Remove Node.js version
pnpm env remove --global <version>
pnpm env rm --global 18

# Use local Node.js version for project
pnpm env use --global 20
node --version  # Verify version

Project Initialization

# Create package.json interactively
pnpm init

# Import from package-lock.json or yarn.lock
pnpm import

Installing Packages

# Install all dependencies
pnpm install
pnpm i

# Install a package (adds to dependencies)
pnpm add <package>

# Install as dev dependency
pnpm add -D <package>
pnpm add --save-dev <package>

# Install as optional dependency
pnpm add -O <package>

# Install globally
pnpm add -g <package>

# Install specific version
pnpm add <package>@<version>
pnpm add lodash@4.17.21

# Install exact version (no ^ or ~)
pnpm add -E <package>
pnpm add --save-exact <package>

# Install from git
pnpm add git+https://github.com/user/repo.git

# Install peer dependencies
pnpm add --save-peer <package>

Removing Packages

# Remove a package
pnpm remove <package>
pnpm rm <package>
pnpm uninstall <package>

# Remove global package
pnpm remove -g <package>

# Remove dev dependency
pnpm remove -D <package>

Updating Packages

# Check for outdated packages
pnpm outdated

# Update all packages
pnpm update
pnpm up

# Update specific package
pnpm update <package>

# Update to latest (ignore ranges)
pnpm update --latest
pnpm up -L

# Interactive update
pnpm update --interactive
pnpm up -i

Listing Packages

# List installed packages
pnpm list
pnpm ls

# List top-level packages only
pnpm list --depth=0

# List global packages
pnpm list -g

# List with details
pnpm list --long

# Why is a package installed
pnpm why <package>

Running Scripts

# Run script from package.json
pnpm run <script>
pnpm <script>  # Shorthand if not pnpm command
pnpm build
pnpm test

# Common script shortcuts
pnpm start
pnpm test
pnpm stop

# Run with arguments
pnpm build -- --watch

# List available scripts
pnpm run

# Run script if exists
pnpm run --if-present <script>

Package Information

# View package details
pnpm info <package>
pnpm view <package>

# View package homepage
pnpm docs <package>

# Check for vulnerabilities
pnpm audit

# Fix vulnerabilities
pnpm audit --fix

Store Management

# View store path
pnpm store path

# Prune unreferenced packages from store
pnpm store prune

# Check store integrity
pnpm store status

# Add package to store without installing
pnpm store add <package>

Configuration

# View all config
pnpm config list

# Get config value
pnpm config get <key>

# Set config value
pnpm config set <key> <value>

# Delete config value
pnpm config delete <key>

# Set store directory
pnpm config set store-dir /path/to/store

Workspaces (Monorepo)

# Install all workspace dependencies
pnpm install

# Add dependency to specific workspace
pnpm add <package> --filter <workspace>

# Add dependency to root
pnpm add -w <package>
pnpm add --workspace-root <package>

# Run script in specific workspace
pnpm --filter <workspace> <script>
pnpm -F <workspace> <script>

# Run script in all workspaces
pnpm -r <script>
pnpm --recursive <script>

# Run script in all workspaces in parallel
pnpm -r --parallel <script>

# Run only in changed packages
pnpm -r --filter "...[origin/main]" <script>

Filtering

# Filter by package name
pnpm --filter <package-name> <command>
pnpm -F <package-name> <command>

# Filter by directory
pnpm --filter ./packages/foo <command>

# Filter by glob
pnpm --filter "@scope/*" <command>

# Exclude packages
pnpm --filter "!<package>" <command>

# Filter dependencies of package
pnpm --filter "...^<package>" <command>

# Filter dependents of package
pnpm --filter "...<package>" <command>

pnpm dlx (Package Runner)

# Run package without installing
pnpm dlx <package>
pnpm dlx create-react-app my-app

# Run specific version
pnpm dlx <package>@<version>

# With multiple packages
pnpm dlx -p typescript -p ts-node ts-node script.ts

Publishing

# Login to registry
pnpm login

# Publish package
pnpm publish

# Publish with access level
pnpm publish --access public

# Dry run
pnpm publish --dry-run

# Publish all workspace packages
pnpm -r publish

Useful Commands

# Rebuild native modules
pnpm rebuild
pnpm rb

# Deduplicate dependencies
pnpm dedupe

# Prune unused packages
pnpm prune

# Create lockfile only
pnpm install --lockfile-only

# Fetch packages to store without installing
pnpm fetch

# Link a local package
pnpm link <dir>
pnpm link --global

# Unlink
pnpm unlink

# Execute command in project root
pnpm exec <command>
pnpm exec jest

# Create pnpm-lock.yaml from npm
pnpm import

Environment Variables

# Skip running scripts
pnpm install --ignore-scripts

# Offline mode
pnpm install --offline

# Prefer offline (use cache when possible)
pnpm install --prefer-offline

# Frozen lockfile (CI mode)
pnpm install --frozen-lockfile

# Force fresh install
pnpm install --force