2022-04-09 21:52:10 +08:00
[![Stand With Ukraine ](https://raw.githubusercontent.com/vshymanskyy/StandWithUkraine/main/banner-direct.svg )](https://stand-with-ukraine.pp.ua)
2022-02-25 19:15:43 +08:00
2022-09-02 07:40:49 +08:00
[简体中文 ](https://pnpm.io/zh/ ) |
2022-01-03 22:46:52 +08:00
[日本語 ](https://pnpm.io/ja/ ) |
2022-04-09 21:52:10 +08:00
[한국어 ](https://pnpm.io/ko/ ) |
2022-01-03 22:46:52 +08:00
[Italiano ](https://pnpm.io/it/ ) |
2022-09-02 07:40:49 +08:00
[Português Brasileiro ](https://pnpm.io/pt/ )
2021-10-23 20:05:14 +08:00
![](https://i.imgur.com/qlW1eEG.png)
Fast, disk space efficient package manager:
* **Fast.** Up to 2x faster than the alternatives (see [benchmark ](#benchmark )).
* **Efficient.** Files inside `node_modules` are linked from a single content-addressable storage.
* **[Great for monorepos](https://pnpm.io/workspaces).**
* **Strict.** A package can access only dependencies that are specified in its `package.json` .
* **Deterministic.** Has a lockfile called `pnpm-lock.yaml` .
* **Works as a Node.js version manager.** See [pnpm env use ](https://pnpm.io/cli/env ).
* **Works everywhere.** Supports Windows, Linux, and macOS.
* **Battle-tested.** Used in production by teams of [all sizes ](https://pnpm.io/users ) since 2016.
2022-09-26 20:22:07 +08:00
* [See the full feature comparison with npm and Yarn ](https://pnpm.io/feature-comparison ).
2022-06-20 03:46:33 +08:00
2021-10-23 20:05:14 +08:00
To quote the [Rush ](https://rushjs.io/ ) team:
> Microsoft uses pnpm in Rush repos with hundreds of projects and hundreds of PRs per day, and we’ ve found it to be very fast and reliable.
[![npm version ](https://img.shields.io/npm/v/pnpm.svg )](https://www.npmjs.com/package/pnpm)
[![Join the chat at Discord ](https://img.shields.io/discord/731599538665553971.svg )](https://r.pnpm.io/chat)
[![OpenCollective ](https://opencollective.com/pnpm/backers/badge.svg )](#backers)
[![OpenCollective ](https://opencollective.com/pnpm/sponsors/badge.svg )](#sponsors)
2021-10-25 02:55:49 +08:00
[![Twitter Follow ](https://img.shields.io/twitter/follow/pnpmjs.svg?style=social&label=Follow )](https://twitter.com/intent/follow?screen_name=pnpmjs& region=follow_link)
2021-10-23 20:05:14 +08:00
2022-06-20 03:46:33 +08:00
## Gold Sponsors
2021-10-23 20:57:18 +08:00
< table >
< tbody >
< tr >
< td align = "center" valign = "middle" >
2022-11-02 02:33:32 +08:00
< a href = "https://bit.dev/?utm_source=pnpm&utm_medium=readme" target = "_blank" > < img src = "https://pnpm.io/img/users/bit.svg" width = "80" > < / a >
2021-10-23 20:57:18 +08:00
< / td >
2022-06-30 22:01:34 +08:00
< td align = "center" valign = "middle" >
2022-11-02 02:33:32 +08:00
< a href = "https://novu.co/?utm_source=pnpm&utm_medium=readme" target = "_blank" >
< picture >
< source media = "(prefers-color-scheme: light)" srcset = "https://pnpm.io/img/users/novu.svg" / >
< source media = "(prefers-color-scheme: dark)" srcset = "https://pnpm.io/img/users/novu_light.svg" / >
< img src = "https://pnpm.io/img/users/novu.svg" width = "180" / >
< / picture >
2022-07-01 07:18:35 +08:00
< / a >
2022-11-02 02:33:32 +08:00
< / td >
2023-02-01 04:38:34 +08:00
< / tr >
< tr >
2022-11-02 02:33:32 +08:00
< td align = "center" valign = "middle" >
< a href = "https://prisma.io/?utm_source=pnpm&utm_medium=readme" target = "_blank" >
< picture >
< source media = "(prefers-color-scheme: light)" srcset = "https://pnpm.io/img/users/prisma.svg" / >
< source media = "(prefers-color-scheme: dark)" srcset = "https://pnpm.io/img/users/prisma_light.svg" / >
< img src = "https://pnpm.io/img/users/prisma.svg" width = "180" / >
< / picture >
2022-07-01 07:18:35 +08:00
< / a >
2022-06-30 22:01:34 +08:00
< / td >
2022-11-23 10:37:21 +08:00
< td align = "center" valign = "middle" >
< a href = "https://www.flightcontrol.dev/?ref=pnpm" target = "_blank" > < img src = "https://pnpm.io/img/users/flightcontrol.png" width = "240" > < / a >
< / td >
< / tr >
2022-11-02 02:33:32 +08:00
< / tbody >
2022-06-20 03:46:33 +08:00
< / table >
## Silver Sponsors
< table >
< tbody >
< tr >
2021-11-11 07:53:25 +08:00
< td align = "center" valign = "middle" >
2022-07-01 07:18:35 +08:00
< a href = "https://leniolabs.com/?utm_source=pnpm&utm_medium=readme" target = "_blank" >
2022-08-13 17:57:45 +08:00
< img src = "https://pnpm.io/img/users/leniolabs.jpg" width = "80" >
2022-07-01 07:18:35 +08:00
< / a >
2021-11-11 07:53:25 +08:00
< / td >
2022-03-05 08:50:36 +08:00
< td align = "center" valign = "middle" >
2022-11-02 02:33:32 +08:00
< a href = "https://vercel.com/?utm_source=pnpm&utm_medium=readme" target = "_blank" >
< picture >
< source media = "(prefers-color-scheme: light)" srcset = "https://pnpm.io/img/users/vercel.svg" / >
< source media = "(prefers-color-scheme: dark)" srcset = "https://pnpm.io/img/users/vercel_light.svg" / >
< img src = "https://pnpm.io/img/users/vercel.svg" width = "180" / >
< / picture >
2022-07-01 07:18:35 +08:00
< / a >
2022-03-05 08:50:36 +08:00
< / td >
2022-08-13 17:41:21 +08:00
< / tr >
< tr >
< td align = "center" valign = "middle" >
2022-11-02 02:33:32 +08:00
< a href = "https://doppler.com/?utm_source=pnpm&utm_medium=readme" target = "_blank" >
< picture >
< source media = "(prefers-color-scheme: light)" srcset = "https://pnpm.io/img/users/doppler.svg" / >
< source media = "(prefers-color-scheme: dark)" srcset = "https://pnpm.io/img/users/doppler_light.svg" / >
< img src = "https://pnpm.io/img/users/doppler.svg" width = "280" / >
< / picture >
2022-08-13 17:41:21 +08:00
< / a >
< / td >
2023-01-22 04:28:51 +08:00
< td align = "center" valign = "middle" >
< a href = "https://depot.dev/?utm_source=pnpm&utm_medium=readme" target = "_blank" >
< picture >
< source media = "(prefers-color-scheme: light)" srcset = "https://pnpm.io/img/users/depot.svg" / >
< source media = "(prefers-color-scheme: dark)" srcset = "https://pnpm.io/img/users/depot_light.svg" / >
< img src = "https://pnpm.io/img/users/depot.svg" width = "200" / >
< / picture >
< / a >
< / td >
< / tr >
2021-10-23 20:57:18 +08:00
< / tbody >
< / table >
Support this project by [becoming a sponsor ](https://opencollective.com/pnpm#sponsor ).
2021-10-23 20:05:14 +08:00
## Background
pnpm uses a content-addressable filesystem to store all files from all module directories on a disk.
2022-11-12 08:25:10 +08:00
When using npm, if you have 100 projects using lodash, you will have 100 copies of lodash on disk.
2021-10-23 20:05:14 +08:00
With pnpm, lodash will be stored in a content-addressable storage, so:
1. 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.
1. All the files are saved in a single place on the disk. When packages are installed, their files are linked
from that single place consuming no additional disk space. Linking is performed using either hard-links or reflinks (copy-on-write).
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 ](https://pnpm.io/blog/2020/05/27/flat-node-modules-is-not-the-only-way ).
2021-10-23 21:29:26 +08:00
💖 Like this project? Let people know with a [tweet ](https://r.pnpm.io/tweet )
2021-10-23 20:05:14 +08:00
## Getting Started
- [Installation ](https://pnpm.io/installation )
- [Usage ](https://pnpm.io/pnpm-cli )
- [Frequently Asked Questions ](https://pnpm.io/faq )
- [Chat ](https://r.pnpm.io/chat )
- [Twitter ](https://twitter.com/pnpmjs )
## Benchmark
pnpm is up to 2x faster than npm and Yarn classic. See all benchmarks [here ](https://r.pnpm.io/benchmarks ).
Benchmarks on an app with lots of dependencies:
![](https://pnpm.io/img/benchmarks/alotta-files.svg)
2021-11-11 07:53:25 +08:00
## Backers
2021-10-23 20:05:14 +08:00
2021-10-23 20:57:18 +08:00
Thank you to all our backers! [Become a backer ](https://opencollective.com/pnpm#backer )
2021-10-23 20:05:14 +08:00
< a href = "https://opencollective.com/pnpm#backers" target = "_blank" > < img src = "https://opencollective.com/pnpm/backers.svg?width=890" > < / a >
2021-10-23 20:57:18 +08:00
## Contributors
2021-10-23 20:05:14 +08:00
2021-10-23 20:57:18 +08:00
This project exists thanks to all the people who contribute. [Contribute ](../../blob/main/CONTRIBUTING.md ).
2021-10-23 20:05:14 +08:00
2021-10-23 20:57:18 +08:00
< a href = "../../graphs/contributors" > < img src = "https://opencollective.com/pnpm/contributors.svg?width=890&button=false" / > < / a >
2021-10-23 20:05:14 +08:00
## License
[MIT ](https://github.com/pnpm/pnpm/blob/main/LICENSE )