Referensi cepat pnpm package manager. Install, workspace, filtering, scripts, dan konfigurasi. Perfect buat developer yang manage monorepo atau proyek Node.js besar.
Login atau daftar akun gratis untuk membaca cheat sheet ini.
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
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)
# 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
{
"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
Filtering 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"
pnpm 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
# 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 |