Referensi cepat pnpm package manager. Install, workspace, filtering, scripts, dan konfigurasi. Perfect buat developer yang manage monorepo atau proyek Node.js besar.
Cara paling cepat install pnpm di sistem kamu.
# Via npm (kalau udah ada Node.js)
npm install -g pnpm
# Via corepack (Node.js 16.9+)
corepack enable
corepack prepare pnpm@latest --activate
# Via Homebrew (macOS)
brew install pnpm
# Via standalone script
curl -fsSL https://get.pnpm.io/install.sh | sh -Cek versi:
pnpm --versionBuat project baru atau inisialisasi package.json.
# Bikin package.json baru (interactive)
pnpm init
# Bikin package.json dengan default values
pnpm init --defaults# Install semua dependencies dari package.json
pnpm install
# atau singkatnya
pnpm i
# Install package tertentu
pnpm add express
pnpm add typescript -D # devDependencies
pnpm add react -P # dependencies (default)
pnpm add jest -O # optionalDependencies
# Install versi spesifik
pnpm add express@4.18.2
pnpm add express@latest
pnpm add next@canary
# Install global
pnpm add -g typescript
pnpm add -g pm2
# Install dari git
pnpm add github:user/repo
pnpm add github:user/repo#branch-name
pnpm add git+https://github.com/user/repo.git# Cek package yang outdated
pnpm outdated
# Update semua packages ke versi terbaru (yang sesuai semver range)
pnpm update
# Update package tertentu
pnpm update express
# Update ke latest (abaikan semver range)
pnpm update --latest
pnpm update --latest expresspnpm remove express
pnpm remove typescript -D
pnpm remove -g typescript# Run script dari package.json
pnpm run build
pnpm run dev
# Shortcut (tidak perlu "run" untuk script umum)
pnpm test
pnpm start
# Run dengan argumen
pnpm run build -- --output-dir=dist
# Run script di semua workspace packages
pnpm -r run build
# List semua script yang tersedia
pnpm run{
"scripts": {
"prebuild": "pnpm run clean",
"build": "tsc",
"postbuild": "pnpm run copy-assets",
"prepublishOnly": "pnpm run build && pnpm test"
}
}Buat file pnpm-workspace.yaml di root proyek.
# pnpm-workspace.yaml
packages:
# semua direktori di packages/
- 'packages/*'
# semua direktori di apps/
- 'apps/*'
# direktori spesifik
- 'tools/*'
# exclude package tertentu
- '!**/test/**'# Install dependencies untuk semua packages
pnpm install
# Tambah dependency ke package tertentu
pnpm --filter @myorg/utils add lodash
# Tambah dependency internal (workspace package sebagai dependency)
pnpm --filter @myorg/api add @myorg/utils
# Run script di package tertentu
pnpm --filter @myorg/web build
# Run script di semua packages (recursive)
pnpm -r run build
pnpm -r run test
# Run script di semua packages yang berubah (affected)
pnpm -r --filter="...[origin/main]" run build
# List semua packages di workspace
pnpm -r ls --depth -1Filtering adalah fitur paling powerful pnpm buat monorepo.
# Filter by name
pnpm --filter @myorg/web build
pnpm -F @myorg/web build
# Filter by directory
pnpm --filter ./apps/web build
# Filter semua packages yang dependen pada @myorg/utils
pnpm --filter "...^@myorg/utils" build
# Filter package @myorg/web dan semua dependency-nya
pnpm --filter "@myorg/web..." build
# Filter package @myorg/web dan semua dependents-nya
pnpm --filter "...@myorg/web" build
# Filter packages yang berubah sejak commit tertentu
pnpm --filter="...[origin/main]" test
# Multiple filters
pnpm --filter @myorg/web --filter @myorg/api test
# Exclude package
pnpm --filter "!@myorg/docs" -r buildpnpm generate lockfile yang deterministic. Selalu commit file ini.
# Install sesuai lockfile (tidak update)
pnpm install --frozen-lockfile
# Force regenerate lockfile
pnpm install --force
# Cek apakah lockfile up to date
pnpm install --lockfile-onlypnpm punya built-in Node.js version manager.
# Install Node.js versi tertentu
pnpm env use --global 20
pnpm env use --global 18.17.0
pnpm env use --global lts
# List versi yang tersedia
pnpm env list
# List versi yang terinstall
pnpm env list --installedSet Node.js version per project lewat .npmrc atau package.json:
{
"engines": {
"node": ">=20.0.0"
}
}File .npmrc di root proyek untuk konfigurasi.
# Auto-install peers
auto-install-peers=true
# Strict peer dependencies
strict-peer-dependencies=false
# Set registry
registry=https://registry.npmjs.org/
# Private registry (scoped packages)
@myorg:registry=https://npm.pkg.github.com/
# Shamefully-hoist (kompatibilitas dengan tools yang cari node_modules)
shamefully-hoist=true
# Isolasi node_modules (default pnpm)
node-linker=isolated
# Buat build lebih cepat
prefer-frozen-lockfile=true
# Concurrent install (jumlah parallel downloads)
network-concurrency=16# Publish ke npm registry
pnpm publish
# Publish dengan tag
pnpm publish --tag beta
# Publish dari workspace package
pnpm --filter @myorg/utils publish
# Dry run (cek apa yang akan dipublish)
pnpm publish --dry-run
# Force publish (skip validation)
pnpm publish --no-git-checks# Cache store location (default ~/.local/share/pnpm/store)
# Bisa dishare antar proyek
PNPM_HOME=~/.pnpm-store pnpm install
# Hardlinks (default) bikin install cepet dan hemat disk
# pnpm otomatis hardlink packages dari global store
# Parallel downloads
pnpm install --network-concurrency 32# Cek vulnerability
pnpm audit
# Fix otomatis
pnpm audit --fix
# Audit dengan format JSON
pnpm audit --json
# Hanya critical/high severity
pnpm audit --audit-level=high# Lihat lokasi store
pnpm store path
# Cek status store
pnpm store status
# Bersihkan package yang tidak terpakai dari store
pnpm store prune
# Add package ke store tanpa install
pnpm fetch| Fitur | npm | yarn | pnpm |
|---|---|---|---|
| Disk usage | Tinggi | Tinggi | Rendah (hardlink) |
| Install speed | Lambat | Cepat | Tercepat |
| Lockfile | package-lock.json | yarn.lock | pnpm-lock.yaml |
| Workspace | npm workspaces | yarn workspaces | pnpm-workspace.yaml |
| Strict node_modules | Tidak | Tidak | Ya (isolated) |
| Plug'n'Play | Tidak | Ya | Tidak |
| Peer dep resolution | Auto | Auto | Manual/auto |
| Filtering | Terbatas | Moderate | Powerful |
| Content-addressable store | Tidak | Tidak | Ya |
Login atau daftar akun gratis untuk membaca cheat sheet ini.