pnpm
76
总安装量
76
周安装量
#2942
全站排名
安装命令
npx skills add https://github.com/hairyf/skills --skill pnpm
Agent 安装分布
cursor
75
claude-code
73
gemini-cli
9
opencode
9
codex
8
Skill 文档
pnpm is a fast, disk space efficient package manager. It uses a content-addressable store to deduplicate packages across all projects on a machine, saving significant disk space. pnpm enforces strict dependency resolution by default, preventing phantom dependencies. Configuration should preferably be placed in pnpm-workspace.yaml for pnpm-specific settings.
Important: When working with pnpm projects, agents should check for pnpm-workspace.yaml and .npmrc files to understand workspace structure and configuration. Always use --frozen-lockfile in CI environments.
The skill is based on pnpm 10.x, generated at 2026-02-01.
Core
| Topic | Description | Reference |
|---|---|---|
| Installation | Standalone script, Corepack, npm, system package managers | core-installation |
| CLI Commands | Install, add, remove, update, run, exec, dlx, and workspace commands | core-cli |
| Configuration | pnpm-workspace.yaml, .npmrc settings, and package.json fields | core-config |
| Workspaces | Monorepo support with filtering, workspace protocol, and shared lockfile | core-workspaces |
| Store | Content-addressable storage, hard links, and disk efficiency | core-store |
| Package Sources | npm, JSR, workspace, Git, tarballâtrusted and exotic sources | core-package-sources |
| Errors | Common error codes and resolutions | core-errors |
Features
| Topic | Description | Reference |
|---|---|---|
| Filtering | Rich selector syntax for –filter (deps, dependents, changed, globs) | features-filtering |
| Catalogs | Centralized dependency version management for workspaces | features-catalogs |
| Overrides | Force specific versions of dependencies including transitive | features-overrides |
| Patches | Modify third-party packages with custom fixes | features-patches |
| Aliases | Install packages under custom names using npm: protocol | features-aliases |
| Hooks | Customize resolution with .pnpmfile.cjs hooks | features-hooks |
| Peer Dependencies | Auto-install, strict mode, and dependency rules | features-peer-deps |
| Config Dependencies | Share hooks, catalogs, patches across projects | features-config-dependencies |
| Git Branch Lockfiles | Branch-specific lockfiles to avoid merge conflicts | features-git-branch-lockfiles |
| Changesets | Monorepo versioning and publishing | features-changesets |
| Supply Chain Security | allowBuilds, blockExoticSubdeps, trustPolicy | features-supply-chain-security |
| Finders | Search dependency graph by package properties (v10.16+) | features-finders |
| Completion | Shell tab completion (Bash, Zsh, Fish) | features-completion |
| Scripts | Lifecycle scripts and pnpm:devPreinstall | features-scripts |
| Cache | Metadata cache commands (list, view, delete) | features-cache |
| Node.js Env | Manage Node.js versions (pnpm env use/add/remove) | features-env |
| Publish & Deploy | publish, pack, deploy, fetch for Docker and registry | features-publish-deploy |
Best Practices
| Topic | Description | Reference |
|---|---|---|
| CI/CD Setup | GitHub Actions, GitLab CI, Docker, and caching strategies | best-practices-ci |
| Docker | BuildKit cache, pnpm fetch, pnpm deploy for monorepos | best-practices-docker |
| Production | Lockfile deployment, offline install | best-practices-production |
| Only Allow pnpm | Enforce pnpm with preinstall (only-allow) | best-practices-only-allow-pnpm |
| TypeScript | preserveSymlinks, packageExtensions, @pnpm/plugin-types-fixer | best-practices-typescript |
| Podman | Btrfs reflinks, store and node_modules volume mounts | best-practices-podman |
| Git | Lockfile commit and merge conflict resolution | best-practices-git |
| Migration | Migrating from npm/Yarn, handling phantom deps, monorepo migration | best-practices-migration |
| Performance | Install optimizations, store caching, workspace parallelization | best-practices-performance |
Advanced
| Topic | Description | Reference |
|---|---|---|
| Limitations | npm lockfile ignored, binstubs are shell scripts | advanced-limitations |