- Home
- Package Managers
- pnpm
pnpm
What it is
pnpm is a package manager and drop-in replacement for npm, available for Linux, macOS, Windows, and Android. It handles npm and JSR packages, Cargo crates, PyPI packages, tarballs, Git repositories, and local directories. Dependency resolution, fetching, and linking run in parallel, while package files are kept in a shared content-addressable store and linked into projects. Workspaces support monorepos with filtering, workspace protocols, and a shared lockfile. By default, only declared direct dependencies appear at the root of node_modules. Since pnpm v10, install scripts are disabled unless explicitly allowed. Other controls include blocking certain transitive dependencies, delaying updates, and applying trust policies; pnpm can also audit for known vulnerabilities and verify registry signatures. It can install and pin Node.js per project, and its standalone installer does not require Node.js. pnpm is free. The provided pages state no pricing, billing, trial, refund, or free-tier limit details.
For and against
For
- Works on Linux, macOS, Windows, and Android
- Supports multiple registries and package sources
- Workspace tools include filtering and a shared lockfile
- Install scripts require approval by default since v10
- Can audit vulnerabilities and verify registry signatures
Against
- No trial or refund terms are stated
- No free-tier limits are stated
- Standalone installation instructions cover macOS, Linux, and Windows
The verdict
pnpm combines package management with workspace features, dependency isolation, and supply-chain controls. It is free, though the provided pages do not specify billing or plan limits.
Who it suits
pnpm suits developers managing dependencies for projects, particularly monorepos that need workspace filtering and a shared lockfile. It also supports teams that want controls over install scripts and dependency trust.
On the record
- Audit and signatures
- pnpm audit can check known vulnerabilities and verify ECDSA registry signatures for installed packages.pnpm.io · read 28 Sep 2026
- Billing details
- No pricing or billing details are stated on the provided pages.pnpm.io · read 28 Sep 2026
- Build safety
- pnpm disables automatic execution of dependency postinstall scripts and recommends explicitly allowing trusted builds.pnpm.io · read 30 Sep 2026
- Build script security
- Install scripts require approval for packages allowed to execute them.pnpm.io · read 28 Sep 2026
- Dependency catalogs
- Catalogs define dependency versions once in pnpm-workspace.yaml.pnpm.io · read 28 Sep 2026
- CI integrations
- The documentation provides configuration examples for AppVeyor, Azure Pipelines, Bitbucket Pipelines, CircleCI, GitHub Actions, GitLab CI, Jenkins, Semaphore, and Travis CI.pnpm.io · read 28 Sep 2026
- Community support
- Community channels include X, YouTube, Reddit, Bluesky, and Discord.pnpm.io · read 28 Sep 2026
- Project ownership
- The site credits contributors from 2015 through 2026.pnpm.io · read 28 Sep 2026
- Content-addressable storage
- pnpm stores package files in a single content-addressable store and links them into projects.pnpm.io · read 28 Sep 2026
- Dependency isolation
- By default, pnpm links only a project's direct dependencies into the root of node_modules.pnpm.io · read 30 Sep 2026
- Dependency patching
- pn patch creates persistent patches reapplied on every install.pnpm.io · read 28 Sep 2026
- Dependency resolution
- Yespnpm.io · read 21 Sep 2026
- Disk efficiency
- Files are hard-linked from one content-addressable store.pnpm.io · read 28 Sep 2026
- Disk use
- pnpm stores package files in a shared content-addressable store and hard-links them into project node_modules.pnpm.io · read 30 Sep 2026
- Feature set
- The feature comparison lists dependency patching, catalogs, JSR registry support, SBOM generation, license listing, and build script security.pnpm.io · read 30 Sep 2026
- Free tier
- No free-tier plan or limits are stated on the provided pages.pnpm.io · read 28 Sep 2026
- GitHub Actions integration
- The pnpm/setup action installs pnpm, can install the requested runtime, runs pnpm install, and can cache the pnpm store.pnpm.io · read 28 Sep 2026
- Installation limit
- pnpm 12 requires Node.js 22.13 or newer when installed through npm, while the standalone executable does not require Node.js after installation.pnpm.io · read 28 Sep 2026
The review
Overview
pnpm is a package manager for JavaScript projects, built as a drop-in replacement for npm. It is best suited to teams managing multiple related packages or looking to reduce duplicated dependency storage. Its strongest case is the combination of workspace tooling, dependency isolation, and install-time controls.
Package files are kept in a shared content-addressable store and hard-linked into projects, while resolution, fetching, and linking run in parallel. That design can save disk space across projects and streamline installs; the project claims speeds of up to 2x npm and Yarn Classic, though results depend on the workload. pnpm handles npm and JSR registries, workspaces, local files, tarballs, Git repositories, and additional formats including Cargo crates and PyPI packages.
The repository is MIT-licensed except for the pnpr directory, which uses the PolyForm Shield License 1.0.0. That distinction is worth reviewing for organizations assessing licensing.
Key features
Workspaces and dependency consistency
For monorepos, pnpm offers workspace protocols, package filtering, and a shared lockfile. Dependency catalogs define versions centrally in pnpm-workspace.yaml, reducing repeated version declarations across packages. These features make pnpm a particularly practical fit for repositories that need coordinated dependency management; for a single small project, they may matter less.
Isolation and install security
By default, only declared direct dependencies appear at the root of node_modules, helping expose accidental reliance on undeclared packages. Since pnpm v10, package postinstall scripts are disabled unless explicitly approved. Teams can also block unusual transitive dependencies, delay updates with a default minimum release age of 1440 minutes, and apply trustPolicy. These controls provide useful safeguards, but require teams to decide which packages and scripts to trust.
Patching and runtime management
pn patch creates persistent patches that are reapplied on each install, useful when a project needs a durable change to a dependency. pnpm can also install and pin Node.js per project, helping teams keep runtime choices aligned.
Audit, signatures, and automation
pnpm audit checks for known vulnerabilities and can verify ECDSA registry signatures for installed packages. Documentation includes CI configuration examples for services including GitHub Actions, GitLab CI, Jenkins, and Azure Pipelines. The pnpm setup action for GitHub Actions can install pnpm and a requested runtime, run installation, and cache the pnpm store. Those integrations suit automated builds, though teams using other CI systems may need to adapt their setup.
Pricing
pnpm is free, with no free trial. The project offers no paid plan terms to weigh against the free option. There is no published plan breakdown or stated quota, seat cap, renewal term, or refund policy, so teams should not assume a particular service-level or billing arrangement. The core repository is MIT-licensed, subject to the pnpr licensing exception noted above.
Platforms
pnpm supports Linux, macOS, Windows, and Android. Installation instructions cover macOS, Linux, and Windows; a standalone installer script does not require Node.js, which is useful when setting up the package manager before a runtime is present.
Who it's for
pnpm is a strong choice for JavaScript teams with monorepos, shared dependencies, or a preference for stricter dependency boundaries. Its content-addressable store is also appealing to developers maintaining several projects that use overlapping packages. Teams that need a narrowly scoped tool for another language may prefer a package manager built specifically for that ecosystem, while projects with no workspace or isolation needs may have less reason to switch from their current npm-based workflow.
Pros and cons
- Pro: A shared store with hard-linked project files can limit duplicated package storage across projects.
- Pro: Workspace filtering and a shared lockfile give monorepo teams concrete ways to coordinate packages.
- Pro: Default dependency isolation and approval for install scripts offer safeguards against undeclared dependencies and unwanted script execution.
- Pro: Persistent patches, runtime pinning, audit checks, and registry signature verification cover needs beyond basic installation.
- Con: The workspace and supply-chain controls may add decisions and process for a simple project that does not need them.
- Con: The speed advantage is a project claim rather than a guarantee for every repository or installation pattern.
- Con: The pnpr directory has a different license from the rest of the repository, which adds a licensing check for some adopters.
Alternatives
Choose npm if you want the established JavaScript package manager and public registry publishing; its free plan covers public package publishing and use, with paid plans also offered. Yarn is another free package-manager option if you want an alternative in the same general category without stated paid plans or usage limits.
For projects in other ecosystems, uv is a free open-source Python package manager, while Cargo is a free Rust package manager and build tool. Conan is a free, open-source choice for C and C++ package and dependency management. Go Modules, vcpkg, and Gradle are other free options to consider.
Browse Package Managers, JavaScript Package Managers, or Monorepo Management Tools for more options by category.
Verdict
Choose pnpm if your JavaScript work benefits from shared dependency storage, coordinated monorepos, and explicit install controls. Those capabilities make it more compelling than a basic npm replacement for teams with multiple packages or tighter dependency policies. Look elsewhere if you need a language-specific manager, or if the workspace and security controls would add complexity without solving a real problem.