Package Exports
- pnpm
- pnpm/bin/pnpm.js
- pnpm/lib/bin/pnpm.js
- pnpm/lib/bin/pnpx.js
- pnpm/lib/main
- pnpm/package.json
This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (pnpm) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.
Readme
pnpm
Fast, disk space efficient package manager
Features:
- Fast. As fast as npm and Yarn.
- Efficient. Files inside
node_modules
are linked from a single content-addressable storage. - Great for monorepos.
- Strict. A package can access only dependencies that are specified in its
package.json
. - Deterministic. Has a lockfile called
pnpm-lock.yaml
. - Works everywhere. Works on Windows, Linux, and OS X.
Like this project? Let people know with a tweet.
Table of Contents
Background
pnpm uses a content-addressable filesystem to store all files from all module directories on a disk. When using npm or Yarn, if you have 100 projects using lodash, you will have 100 copies of lodash on disk. With pnpm, lodash will be stored in a content-addressable storage, so:
- If you depend on different versions of lodash, only the files that differ are added to the store.
If lodash has 100 files, and a new version has a change only in one of those files,
pnpm update
will only add 1 new file to the storage. - All the files are saved in a single place on the disk. When packages are installed, their files are hard-linked from that single place consuming no additional disk space.
As a result, you save gigabytes of space on your disk and you have a lot faster installations!
If you'd like more details about the unique node_modules
structure that pnpm creates and
why it works fine with the Node.js ecosystem, read this small article: Flat node_modules is not the only way.
Install
Using a standalone script:
curl -L https://raw.githubusercontent.com/pnpm/self-installer/master/install.js | node
On Windows (PowerShell):
(Invoke-WebRequest 'https://raw.githubusercontent.com/pnpm/self-installer/master/install.js').Content | node
Via npx:
npx pnpm add -g pnpm
Once you first installed pnpm, you can upgrade it using pnpm:
pnpm add -g pnpm
Do you wanna use pnpm on CI servers? See: Continuous Integration.
Usage
pnpm CLI
Just use pnpm in place of npm. For instance, to install run:
pnpm install
For more advanced usage, read pnpm CLI on our website.
For using the programmatic API, use pnpm's engine: supi.
pnpx CLI
npm has a great package runner called npx.
pnpm offers the same tool via the pnpx
command. The only difference is that pnpx
uses pnpm for installing packages.
The following command installs a temporary create-react-app and calls it, without polluting global installs or requiring more than one step!
pnpx create-react-app my-cool-new-app
Benchmark
pnpm is as fast as npm and Yarn. See all benchmarks here.
Benchmarks on a React app:
Support
Contributors
This project exists thanks to all the people who contribute. [Contribute].
Backers
Thank you to all our backers! 🙏 [Become a backer]
Sponsors
Support this project by becoming a sponsor. Your logo will show up here with a link to your website. [Become a sponsor]