Skip to main content

pnpm: Save time. Save disk space. Supercharge your monorepos.

Get lightning-fast installation speeds and a smarter, safer way to manage dependencies.

Everything you expect, and the things you didn’t know to ask for

pnpm is a drop-in replacement for npm — and then keeps going, with the features large repos actually need.

Blazing fast installs

Resolution, fetching and linking happen in parallel instead of one stage at a time. On a warm store, an install is mostly just creating links.

See the benchmarks

Saving disk space

Files inside node_modules are hard-linked from a single content-addressable store. A hundred projects on the same version cost you one copy on disk.

Learn more

Workspace support

First-class monorepos: the workspace protocol for local packages, filtering to run tasks on just the projects you touched, and a single lockfile for everything.

Learn more

Catalogs

Define a dependency version once in pnpm-workspace.yaml and reference it as "catalog:" everywhere. One line to upgrade, and no more version-drift merge conflicts.

Learn more

Strict by default

Only your declared dependencies land in the root of node_modules, so your code can never quietly import a package you never installed.

Learn more

Safer builds

Install scripts don’t run for arbitrary dependencies. You approve which packages may execute build scripts — supply-chain safety without extra tooling.

Learn more

Patch dependencies

Fix a bug in a package without waiting for upstream — "pn patch" writes a persistent patch that is reapplied on every install.

Learn more

Managing runtimes

Install and pin Node.js per project straight from pnpm — no nvm, no shell hooks, no “works on my machine” version mismatches.

Learn more

How it works

A single store on disk, linked everywhere

Other package managers copy the same files into every project. pnpm keeps one copy and links to it — that single design decision is where the speed and the disk savings come from.

  • One copy per file, not per project

    With npm, 100 projects using the same dependency means 100 copies on disk. pnpm stores every file once in a content-addressable store and hard-links it into each node_modules.

  • Updates only store what changed

    If a new version of a package changes one file out of a hundred, pnpm adds exactly one file to the store instead of cloning the whole package again.

  • A node_modules you can trust

    pnpm symlinks only your declared dependencies into the root of node_modules, so your code can never quietly import a package you never installed.

  • Resolve, fetch and link in parallel

    Instead of finishing each stage before starting the next, pnpm links every package as soon as it is available — which is why installs feel instant on a warm store.

1 copy

of every file on your disk, shared across all projects

0 bytes

extra disk space when a project reuses a version you already have

Strict

no access to undeclared dependencies, by default

Up and running in one command

pnpm is a drop-in replacement for npm. Point it at any existing project — no migration, no rewrites, no lockfile gymnastics.

  1. 1

    Install pnpm once — no Node.js required if you use the standalone script.

  2. 2

    Run pn install in any existing project — pn is the built-in short alias for pnpm. Your package.json works as-is.

  3. 3

    That's it. Reclaim your disk space and watch your installs finish before your coffee does.

$curl -fsSL https://get.pnpm.io/install.sh | sh -
$pn install$pn add react$pn build$pn create vite my-app$pnx tsx script.ts

Need another install method? Read the full installation guide.

pnpm vs npm

Everything npm does, plus the features that make large repos manageable.

Featurepnpmnpm
Workspace support
Isolated node_modulesDefault in pnpm.
Hoisted node_modulesDefault in npm.
Content-addressable storage
CatalogsShared version ranges across a workspace.
Managing runtimesInstall Node.js without nvm.
Patching dependencies
Side-effects cache
Build script securityScripts only run for packages you allow.
Config dependencies
JSR registry support
Listing licensespn licenses list

See the full feature comparison in the documentation.

@pnpmjs is a strong option for protecting against supply chain attacks, and the DX is excellent too they removed postinstall scripts a while back, cutting one big attack path now they’ve introduced minimumReleaseAge which lets you hold off on new versions for a day or more

Its not even been a day but I suddenly feel that @pnpmjs has improved my overall dev experience 🤯

This whole time I've stuck with npm out of habit and because it "just works". But then I had to override a subdependency via package.json, and npm just wouldn't do it. I spent hours fiddling. So @darcy recommends I use @pnpmjs , and w/ the same package.json, it "just works".

Gotta say @pnpmjs has never let me down. Great piece of software.

By adopting the latest changes from @pnpmjs we got huge performance benefits in @bitdev_ ! still early to call true numbers, but i'm seeing decreases of 40% in some flows! incredible work by @ZoltanKochan and the team behind pnpm!

I ❤️ pnpm. Just radically sped up a CI build by switching to pnpm and parallelizing tasks (which pnpm supports built-in) Before: 12 minutes After: 2 minutes 😀