Loading source
Pulling the file list, source metadata, and syntax-aware rendering for this listing.
Source from repo
pnpm 10.x reference skill covering workspaces, catalogs, patches, peer deps, overrides, and CI/CD caching strategies.
Files
Skill
Size
Entrypoint
Format
Open file
Syntax-highlighted preview of this file as included in the skill package.
references/core-config.md
1---2name: pnpm-configuration3description: Configuration options via pnpm-workspace.yaml and .npmrc settings4---56# pnpm Configuration78pnpm uses two main configuration files: `pnpm-workspace.yaml` for workspace and pnpm-specific settings, and `.npmrc` for npm-compatible and pnpm-specific settings.910## pnpm-workspace.yaml1112The recommended location for pnpm-specific configurations. Place at project root.1314```yaml15# Define workspace packages16packages:17- 'packages/*'18- 'apps/*'19- '!**/test/**' # Exclude pattern2021# Catalog for shared dependency versions22catalog:23react: ^18.2.024typescript: ~5.3.02526# Named catalogs for different dependency groups27catalogs:28react17:29react: ^17.0.230react-dom: ^17.0.231react18:32react: ^18.2.033react-dom: ^18.2.03435# Override resolutions (preferred location)36overrides:37lodash: ^4.17.2138'foo@^1.0.0>bar': ^2.0.03940# pnpm settings (alternative to .npmrc)41settings:42auto-install-peers: true43strict-peer-dependencies: false44link-workspace-packages: true45prefer-workspace-packages: true46shared-workspace-lockfile: true47```4849## .npmrc Settings5051pnpm reads settings from `.npmrc` files. Create at project root or user home.5253### Common pnpm Settings5455```ini56# Automatically install peer dependencies57auto-install-peers=true5859# Fail on peer dependency issues60strict-peer-dependencies=false6162# Hoist patterns for dependencies63public-hoist-pattern[]=*types*64public-hoist-pattern[]=*eslint*65shamefully-hoist=false6667# Store location68store-dir=~/.pnpm-store6970# Virtual store location71virtual-store-dir=node_modules/.pnpm7273# Lockfile settings74lockfile=true75prefer-frozen-lockfile=true7677# Side effects cache (speeds up rebuilds)78side-effects-cache=true7980# Registry settings81registry=https://registry.npmjs.org/82@myorg:registry=https://npm.myorg.com/83```8485### Workspace Settings8687```ini88# Link workspace packages89link-workspace-packages=true9091# Prefer workspace packages over registry92prefer-workspace-packages=true9394# Single lockfile for all packages95shared-workspace-lockfile=true9697# Save prefix for workspace dependencies98save-workspace-protocol=rolling99```100101### Node.js Settings102103```ini104# Use specific Node.js version105use-node-version=20.10.0106107# Node.js version file108node-version-file=.nvmrc109110# Manage Node.js versions111manage-package-manager-versions=true112```113114### Security Settings115116```ini117# Ignore specific scripts118ignore-scripts=false119120# Allow specific build scripts121onlyBuiltDependencies[]=esbuild122onlyBuiltDependencies[]=sharp123124# Package extensions for missing peer deps125package-extensions[foo@1].peerDependencies.bar=*126```127128## Configuration Hierarchy129130Settings are read in order (later overrides earlier):1311321. `/etc/npmrc` - Global config1332. `~/.npmrc` - User config1343. `<project>/.npmrc` - Project config1354. Environment variables: `npm_config_<key>=<value>`1365. `pnpm-workspace.yaml` settings field137138## Environment Variables139140```bash141# Set config via env142npm_config_registry=https://registry.npmjs.org/143144# pnpm-specific env vars145PNPM_HOME=~/.local/share/pnpm146```147148## Package.json Fields149150pnpm reads specific fields from `package.json`:151152```json153{154"pnpm": {155"overrides": {156"lodash": "^4.17.21"157},158"peerDependencyRules": {159"ignoreMissing": ["@babel/*"],160"allowedVersions": {161"react": "17 || 18"162}163},164"neverBuiltDependencies": ["fsevents"],165"onlyBuiltDependencies": ["esbuild"],166"allowedDeprecatedVersions": {167"request": "*"168},169"patchedDependencies": {170"[email protected]": "patches/[email protected]"171}172}173}174```175176## Key Differences from npm/yarn1771781. **Strict by default**: No phantom dependencies1792. **Workspace protocol**: `workspace:*` for local packages1803. **Catalogs**: Centralized version management1814. **Content-addressable store**: Shared across projects182183<!--184Source references:185- https://pnpm.io/pnpm-workspace_yaml186- https://pnpm.io/npmrc187- https://pnpm.io/package_json188-->189