pnpm

Gestionnaire de paquets economique en espace disque - liens durs, dependances strictes, support monorepo rapide

TL;DR

Quoi : Gestionnaire de paquets rapide et économe en espace disque pour Node.js.

Pourquoi : 2x plus rapide que npm, économise de l’espace disque, dépendances strictes, excellent support monorepo.

Quick Start

Installer :

# npm
npm install -g pnpm

# Homebrew
brew install pnpm

# Check version
pnpm --version

Utilisation basique :

pnpm init
pnpm add express
pnpm install
pnpm dev

Cheatsheet

CommandeDescription
pnpm add pkgAjouter une dépendance
pnpm add -D pkgAjouter une dépendance dev
pnpm remove pkgSupprimer un paquet
pnpm installInstaller toutes les deps
pnpm updateMettre à jour les paquets
pnpm run scriptExécuter un script
pnpm dlx pkgExécuter un paquet (comme npx)

Gotchas

Installer des paquets

# 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

Filtrage

# 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

Configuration (.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

Migration depuis 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