123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288 |
- [简体中文](https://pnpm.io/zh/) |
- [日本語](https://pnpm.io/ja/) |
- [한국어](https://pnpm.io/ko/) |
- [Italiano](https://pnpm.io/it/) |
- [Português Brasileiro](https://pnpm.io/pt/)
- <picture>
- <source media="(prefers-color-scheme: light)" srcset="https://i.imgur.com/qlW1eEG.png">
- <source media="(prefers-color-scheme: dark)" srcset="https://i.imgur.com/qlW1eEG.png">
- <img src="https://i.imgur.com/qlW1eEG.png" alt="pnpm">
- </picture>
- 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.
- * [See the full feature comparison with npm and Yarn](https://pnpm.io/feature-comparison).
- 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.
- [](https://github.com/pnpm/pnpm/releases/latest)
- [](https://r.pnpm.io/chat)
- [](https://opencollective.com/pnpm)
- [](https://opencollective.com/pnpm)
- [](https://x.com/intent/follow?screen_name=pnpmjs®ion=follow_link)
- [](https://stand-with-ukraine.pp.ua)
- ## Platinum Sponsors
- <table>
- <tbody>
- <tr>
- <td align="center" valign="middle">
- <a href="https://bit.dev/?utm_source=pnpm&utm_medium=readme" target="_blank"><img src="https://pnpm.io/img/users/bit.svg" width="80" alt="Bit"></a>
- </td>
- <td align="center" valign="middle">
- <a href="https://sanity.io/?utm_source=pnpm&utm_medium=readme" target="_blank"><img src="https://pnpm.io/img/users/sanity.svg" width="180" alt="Bit"></a>
- </td>
- <td align="center" valign="middle">
- <a href="https://syntax.fm/?utm_source=pnpm&utm_medium=readme" target="_blank">
- <picture>
- <source media="(prefers-color-scheme: light)" srcset="https://pnpm.io/img/users/syntaxfm.svg" />
- <source media="(prefers-color-scheme: dark)" srcset="https://pnpm.io/img/users/syntaxfm_light.svg" />
- <img src="https://pnpm.io/img/users/syntaxfm.svg" width="90" alt="Syntax" />
- </picture>
- </a>
- </td>
- </tr>
- </tbody>
- </table>
- ## Gold Sponsors
- <table>
- <tbody>
- <tr>
- <td align="center" valign="middle">
- <a href="https://discord.com/?utm_source=pnpm&utm_medium=readme" target="_blank">
- <picture>
- <source media="(prefers-color-scheme: light)" srcset="https://pnpm.io/img/users/discord.svg" />
- <source media="(prefers-color-scheme: dark)" srcset="https://pnpm.io/img/users/discord_light.svg" />
- <img src="https://pnpm.io/img/users/discord.svg" width="220" alt="Discord" />
- </picture>
- </a>
- </td>
- <td align="center" valign="middle">
- <a href="https://uscreen.de/?utm_source=pnpm&utm_medium=readme" target="_blank">
- <picture>
- <source media="(prefers-color-scheme: light)" srcset="https://pnpm.io/img/users/uscreen.svg" />
- <source media="(prefers-color-scheme: dark)" srcset="https://pnpm.io/img/users/uscreen_light.svg" />
- <img src="https://pnpm.io/img/users/uscreen.svg" width="180" alt="u|screen" />
- </picture>
- </a>
- </td>
- </tr>
- <tr>
- <td align="center" valign="middle">
- <a href="https://www.jetbrains.com/?utm_source=pnpm&utm_medium=readme" target="_blank">
- <picture>
- <source media="(prefers-color-scheme: light)" srcset="https://pnpm.io/img/users/jetbrains.svg" />
- <source media="(prefers-color-scheme: dark)" srcset="https://pnpm.io/img/users/jetbrains.svg" />
- <img src="https://pnpm.io/img/users/jetbrains.svg" width="180" alt="JetBrains" />
- </picture>
- </a>
- </td>
- <td align="center" valign="middle">
- <a href="https://nx.dev/?utm_source=pnpm&utm_medium=readme" target="_blank">
- <picture>
- <source media="(prefers-color-scheme: light)" srcset="https://pnpm.io/img/users/nx.svg?0" />
- <source media="(prefers-color-scheme: dark)" srcset="https://pnpm.io/img/users/nx_light.svg?0" />
- <img src="https://pnpm.io/img/users/nx.svg" width="70" alt="Nx" />
- </picture>
- </a>
- </td>
- </tr>
- <tr>
- <td align="center" valign="middle">
- <a href="https://coderabbit.ai/?utm_source=pnpm&utm_medium=readme" target="_blank">
- <picture>
- <source media="(prefers-color-scheme: light)" srcset="https://pnpm.io/img/users/coderabbit.svg" />
- <source media="(prefers-color-scheme: dark)" srcset="https://pnpm.io/img/users/coderabbit_light.svg" />
- <img src="https://pnpm.io/img/users/coderabbit.svg" width="220" alt="CodeRabbit" />
- </picture>
- </a>
- </td>
- <td align="center" valign="middle">
- <a href="https://route4me.com/?utm_source=pnpm&utm_medium=readme" target="_blank">
- <img src="https://pnpm.io/img/users/route4me.svg" width="220" alt="Route4Me" />
- </a>
- </td>
- </tr>
- <tr>
- <td align="center" valign="middle">
- <a href="https://workleap.com/?utm_source=pnpm&utm_medium=readme" target="_blank">
- <picture>
- <source media="(prefers-color-scheme: light)" srcset="https://pnpm.io/img/users/workleap.svg" />
- <source media="(prefers-color-scheme: dark)" srcset="https://pnpm.io/img/users/workleap_light.svg" />
- <img src="https://pnpm.io/img/users/workleap.svg" width="190" alt="Workleap" />
- </picture>
- </a>
- </td>
- <td align="center" valign="middle">
- <a href="https://stackblitz.com/?utm_source=pnpm&utm_medium=readme" target="_blank">
- <picture>
- <source media="(prefers-color-scheme: light)" srcset="https://pnpm.io/img/users/stackblitz.svg" />
- <source media="(prefers-color-scheme: dark)" srcset="https://pnpm.io/img/users/stackblitz_light.svg" />
- <img src="https://pnpm.io/img/users/stackblitz.svg" width="190" alt="Stackblitz" />
- </picture>
- </a>
- </td>
- </tr>
- </tbody>
- </table>
- ## Silver Sponsors
- <table>
- <tbody>
- <tr>
- <td align="center" valign="middle">
- <a href="https://leniolabs.com/?utm_source=pnpm&utm_medium=readme" target="_blank">
- <img src="https://pnpm.io/img/users/leniolabs.jpg" width="40" alt="Leniolabs_">
- </a>
- </td>
- <td align="center" valign="middle">
- <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="90" alt="Vercel" />
- </picture>
- </a>
- </td>
- <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="100" alt="Depot" />
- </picture>
- </a>
- </td>
- </tr>
- <tr>
- <td align="center" valign="middle">
- <a href="https://moonrepo.dev/?utm_source=pnpm&utm_medium=readme" target="_blank">
- <picture>
- <source media="(prefers-color-scheme: light)" srcset="https://pnpm.io/img/users/moonrepo.svg" />
- <source media="(prefers-color-scheme: dark)" srcset="https://pnpm.io/img/users/moonrepo_light.svg" />
- <img src="https://pnpm.io/img/users/moonrepo.svg" width="100" alt="moonrepo" />
- </picture>
- </a>
- </td>
- <td align="center" valign="middle">
- <a href="https://devowl.io/?utm_source=pnpm&utm_medium=readme" target="_blank">
- <picture>
- <source media="(prefers-color-scheme: light)" srcset="https://pnpm.io/img/users/devowlio.svg" />
- <source media="(prefers-color-scheme: dark)" srcset="https://pnpm.io/img/users/devowlio.svg" />
- <img src="https://pnpm.io/img/users/devowlio.svg" width="100" alt="devowl.io" />
- </picture>
- </a>
- </td>
- <td align="center" valign="middle">
- <a href="https://cerbos.dev/?utm_source=pnpm&utm_medium=readme" target="_blank">
- <picture>
- <source media="(prefers-color-scheme: light)" srcset="https://pnpm.io/img/users/cerbos.svg" />
- <source media="(prefers-color-scheme: dark)" srcset="https://pnpm.io/img/users/cerbos_light.svg" />
- <img src="https://pnpm.io/img/users/cerbos.svg" width="90" alt="Cerbos" />
- </picture>
- </a>
- </td>
- </tr>
- <tr>
- <td align="center" valign="middle">
- <a href="https://vlt.sh/?utm_source=pnpm&utm_medium=readme" target="_blank">
- <picture>
- <source media="(prefers-color-scheme: light)" srcset="https://pnpm.io/img/users/vlt.svg" />
- <source media="(prefers-color-scheme: dark)" srcset="https://pnpm.io/img/users/vlt_light.svg" />
- <img src="https://pnpm.io/img/users/vlt.svg" width="70" alt="vlt" />
- </picture>
- </a>
- </td>
- <td align="center" valign="middle">
- <a href="https://vite.dev/?utm_source=pnpm&utm_medium=readme" target="_blank">
- <img src="https://pnpm.io/img/users/vitejs.svg" width="32" alt="Vite">
- </a>
- </td>
- <td align="center" valign="middle">
- <a href="https://macpaw.com/?utm_source=pnpm&utm_medium=readme" target="_blank">
- <picture>
- <source media="(prefers-color-scheme: light)" srcset="https://pnpm.io/img/users/macpaw.svg" />
- <source media="(prefers-color-scheme: dark)" srcset="https://pnpm.io/img/users/macpaw_light.svg" />
- <img src="https://pnpm.io/img/users/macpaw.svg" width="100" />
- </picture>
- </a>
- </td>
- </tr>
- <tr>
- <td align="center" valign="middle">
- <a href="https://opensource.mercedes-benz.com/?utm_source=pnpm&utm_medium=readme" target="_blank">
- <img src="https://pnpm.io/img/users/mercedes.svg" width="32" alt="Vite">
- </a>
- </td>
- </tr>
- </tbody>
- </table>
- Support this project by [becoming a sponsor](https://opencollective.com/pnpm#sponsor).
- ## Background
- pnpm uses a content-addressable filesystem to store all files from all module directories on a disk.
- When using npm, 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:
- 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).
- 💖 Like this project? Let people know with a [tweet](https://r.pnpm.io/tweet)
- ## Installation
- For installation options [visit our website](https://pnpm.io/installation).
- ## Usage
- Just use pnpm in place of npm/Yarn. E.g., install dependencies via:
- ```
- pnpm install
- ```
- For more advanced usage, read [pnpm CLI](https://pnpm.io/pnpm-cli) on our website, or run `pnpm help`.
- ## 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:
- 
- ## Support
- - [Frequently Asked Questions](https://pnpm.io/faq)
- - [Chat](https://r.pnpm.io/chat)
- - [X](https://x.com/pnpmjs)
- - [Bluesky](https://bsky.app/profile/pnpm.io)
- ## License
- [MIT](https://github.com/pnpm/pnpm/blob/main/LICENSE)
|