aaf39d378a3acd96fd58015511573847c468581c828dfbe2d4db8e5749934fbf0eba28a8fa4d4b12f822313aaa7128cf59d44e117639af5df39b3b5465f412 13 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288
  1. [简体中文](https://pnpm.io/zh/) |
  2. [日本語](https://pnpm.io/ja/) |
  3. [한국어](https://pnpm.io/ko/) |
  4. [Italiano](https://pnpm.io/it/) |
  5. [Português Brasileiro](https://pnpm.io/pt/)
  6. <picture>
  7. <source media="(prefers-color-scheme: light)" srcset="https://i.imgur.com/qlW1eEG.png">
  8. <source media="(prefers-color-scheme: dark)" srcset="https://i.imgur.com/qlW1eEG.png">
  9. <img src="https://i.imgur.com/qlW1eEG.png" alt="pnpm">
  10. </picture>
  11. Fast, disk space efficient package manager:
  12. * **Fast.** Up to 2x faster than the alternatives (see [benchmark](#benchmark)).
  13. * **Efficient.** Files inside `node_modules` are linked from a single content-addressable storage.
  14. * **[Great for monorepos](https://pnpm.io/workspaces).**
  15. * **Strict.** A package can access only dependencies that are specified in its `package.json`.
  16. * **Deterministic.** Has a lockfile called `pnpm-lock.yaml`.
  17. * **Works as a Node.js version manager.** See [pnpm env use](https://pnpm.io/cli/env).
  18. * **Works everywhere.** Supports Windows, Linux, and macOS.
  19. * **Battle-tested.** Used in production by teams of [all sizes](https://pnpm.io/users) since 2016.
  20. * [See the full feature comparison with npm and Yarn](https://pnpm.io/feature-comparison).
  21. To quote the [Rush](https://rushjs.io/) team:
  22. > 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.
  23. [![npm version](https://img.shields.io/npm/v/pnpm.svg?label=latest)](https://github.com/pnpm/pnpm/releases/latest)
  24. [![Join the chat at Discord](https://img.shields.io/discord/731599538665553971.svg)](https://r.pnpm.io/chat)
  25. [![OpenCollective](https://opencollective.com/pnpm/backers/badge.svg)](https://opencollective.com/pnpm)
  26. [![OpenCollective](https://opencollective.com/pnpm/sponsors/badge.svg)](https://opencollective.com/pnpm)
  27. [![X Follow](https://img.shields.io/twitter/follow/pnpmjs.svg?style=social&label=Follow)](https://x.com/intent/follow?screen_name=pnpmjs&region=follow_link)
  28. [![Stand With Ukraine](https://raw.githubusercontent.com/vshymanskyy/StandWithUkraine/main/badges/StandWithUkraine.svg)](https://stand-with-ukraine.pp.ua)
  29. ## Platinum Sponsors
  30. <table>
  31. <tbody>
  32. <tr>
  33. <td align="center" valign="middle">
  34. <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>
  35. </td>
  36. <td align="center" valign="middle">
  37. <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>
  38. </td>
  39. <td align="center" valign="middle">
  40. <a href="https://syntax.fm/?utm_source=pnpm&utm_medium=readme" target="_blank">
  41. <picture>
  42. <source media="(prefers-color-scheme: light)" srcset="https://pnpm.io/img/users/syntaxfm.svg" />
  43. <source media="(prefers-color-scheme: dark)" srcset="https://pnpm.io/img/users/syntaxfm_light.svg" />
  44. <img src="https://pnpm.io/img/users/syntaxfm.svg" width="90" alt="Syntax" />
  45. </picture>
  46. </a>
  47. </td>
  48. </tr>
  49. </tbody>
  50. </table>
  51. ## Gold Sponsors
  52. <table>
  53. <tbody>
  54. <tr>
  55. <td align="center" valign="middle">
  56. <a href="https://discord.com/?utm_source=pnpm&utm_medium=readme" target="_blank">
  57. <picture>
  58. <source media="(prefers-color-scheme: light)" srcset="https://pnpm.io/img/users/discord.svg" />
  59. <source media="(prefers-color-scheme: dark)" srcset="https://pnpm.io/img/users/discord_light.svg" />
  60. <img src="https://pnpm.io/img/users/discord.svg" width="220" alt="Discord" />
  61. </picture>
  62. </a>
  63. </td>
  64. <td align="center" valign="middle">
  65. <a href="https://uscreen.de/?utm_source=pnpm&utm_medium=readme" target="_blank">
  66. <picture>
  67. <source media="(prefers-color-scheme: light)" srcset="https://pnpm.io/img/users/uscreen.svg" />
  68. <source media="(prefers-color-scheme: dark)" srcset="https://pnpm.io/img/users/uscreen_light.svg" />
  69. <img src="https://pnpm.io/img/users/uscreen.svg" width="180" alt="u|screen" />
  70. </picture>
  71. </a>
  72. </td>
  73. </tr>
  74. <tr>
  75. <td align="center" valign="middle">
  76. <a href="https://www.jetbrains.com/?utm_source=pnpm&utm_medium=readme" target="_blank">
  77. <picture>
  78. <source media="(prefers-color-scheme: light)" srcset="https://pnpm.io/img/users/jetbrains.svg" />
  79. <source media="(prefers-color-scheme: dark)" srcset="https://pnpm.io/img/users/jetbrains.svg" />
  80. <img src="https://pnpm.io/img/users/jetbrains.svg" width="180" alt="JetBrains" />
  81. </picture>
  82. </a>
  83. </td>
  84. <td align="center" valign="middle">
  85. <a href="https://nx.dev/?utm_source=pnpm&utm_medium=readme" target="_blank">
  86. <picture>
  87. <source media="(prefers-color-scheme: light)" srcset="https://pnpm.io/img/users/nx.svg?0" />
  88. <source media="(prefers-color-scheme: dark)" srcset="https://pnpm.io/img/users/nx_light.svg?0" />
  89. <img src="https://pnpm.io/img/users/nx.svg" width="70" alt="Nx" />
  90. </picture>
  91. </a>
  92. </td>
  93. </tr>
  94. <tr>
  95. <td align="center" valign="middle">
  96. <a href="https://coderabbit.ai/?utm_source=pnpm&utm_medium=readme" target="_blank">
  97. <picture>
  98. <source media="(prefers-color-scheme: light)" srcset="https://pnpm.io/img/users/coderabbit.svg" />
  99. <source media="(prefers-color-scheme: dark)" srcset="https://pnpm.io/img/users/coderabbit_light.svg" />
  100. <img src="https://pnpm.io/img/users/coderabbit.svg" width="220" alt="CodeRabbit" />
  101. </picture>
  102. </a>
  103. </td>
  104. <td align="center" valign="middle">
  105. <a href="https://route4me.com/?utm_source=pnpm&utm_medium=readme" target="_blank">
  106. <img src="https://pnpm.io/img/users/route4me.svg" width="220" alt="Route4Me" />
  107. </a>
  108. </td>
  109. </tr>
  110. <tr>
  111. <td align="center" valign="middle">
  112. <a href="https://workleap.com/?utm_source=pnpm&utm_medium=readme" target="_blank">
  113. <picture>
  114. <source media="(prefers-color-scheme: light)" srcset="https://pnpm.io/img/users/workleap.svg" />
  115. <source media="(prefers-color-scheme: dark)" srcset="https://pnpm.io/img/users/workleap_light.svg" />
  116. <img src="https://pnpm.io/img/users/workleap.svg" width="190" alt="Workleap" />
  117. </picture>
  118. </a>
  119. </td>
  120. <td align="center" valign="middle">
  121. <a href="https://stackblitz.com/?utm_source=pnpm&utm_medium=readme" target="_blank">
  122. <picture>
  123. <source media="(prefers-color-scheme: light)" srcset="https://pnpm.io/img/users/stackblitz.svg" />
  124. <source media="(prefers-color-scheme: dark)" srcset="https://pnpm.io/img/users/stackblitz_light.svg" />
  125. <img src="https://pnpm.io/img/users/stackblitz.svg" width="190" alt="Stackblitz" />
  126. </picture>
  127. </a>
  128. </td>
  129. </tr>
  130. </tbody>
  131. </table>
  132. ## Silver Sponsors
  133. <table>
  134. <tbody>
  135. <tr>
  136. <td align="center" valign="middle">
  137. <a href="https://leniolabs.com/?utm_source=pnpm&utm_medium=readme" target="_blank">
  138. <img src="https://pnpm.io/img/users/leniolabs.jpg" width="40" alt="Leniolabs_">
  139. </a>
  140. </td>
  141. <td align="center" valign="middle">
  142. <a href="https://vercel.com/?utm_source=pnpm&utm_medium=readme" target="_blank">
  143. <picture>
  144. <source media="(prefers-color-scheme: light)" srcset="https://pnpm.io/img/users/vercel.svg" />
  145. <source media="(prefers-color-scheme: dark)" srcset="https://pnpm.io/img/users/vercel_light.svg" />
  146. <img src="https://pnpm.io/img/users/vercel.svg" width="90" alt="Vercel" />
  147. </picture>
  148. </a>
  149. </td>
  150. <td align="center" valign="middle">
  151. <a href="https://depot.dev/?utm_source=pnpm&utm_medium=readme" target="_blank">
  152. <picture>
  153. <source media="(prefers-color-scheme: light)" srcset="https://pnpm.io/img/users/depot.svg" />
  154. <source media="(prefers-color-scheme: dark)" srcset="https://pnpm.io/img/users/depot_light.svg" />
  155. <img src="https://pnpm.io/img/users/depot.svg" width="100" alt="Depot" />
  156. </picture>
  157. </a>
  158. </td>
  159. </tr>
  160. <tr>
  161. <td align="center" valign="middle">
  162. <a href="https://moonrepo.dev/?utm_source=pnpm&utm_medium=readme" target="_blank">
  163. <picture>
  164. <source media="(prefers-color-scheme: light)" srcset="https://pnpm.io/img/users/moonrepo.svg" />
  165. <source media="(prefers-color-scheme: dark)" srcset="https://pnpm.io/img/users/moonrepo_light.svg" />
  166. <img src="https://pnpm.io/img/users/moonrepo.svg" width="100" alt="moonrepo" />
  167. </picture>
  168. </a>
  169. </td>
  170. <td align="center" valign="middle">
  171. <a href="https://devowl.io/?utm_source=pnpm&utm_medium=readme" target="_blank">
  172. <picture>
  173. <source media="(prefers-color-scheme: light)" srcset="https://pnpm.io/img/users/devowlio.svg" />
  174. <source media="(prefers-color-scheme: dark)" srcset="https://pnpm.io/img/users/devowlio.svg" />
  175. <img src="https://pnpm.io/img/users/devowlio.svg" width="100" alt="devowl.io" />
  176. </picture>
  177. </a>
  178. </td>
  179. <td align="center" valign="middle">
  180. <a href="https://cerbos.dev/?utm_source=pnpm&utm_medium=readme" target="_blank">
  181. <picture>
  182. <source media="(prefers-color-scheme: light)" srcset="https://pnpm.io/img/users/cerbos.svg" />
  183. <source media="(prefers-color-scheme: dark)" srcset="https://pnpm.io/img/users/cerbos_light.svg" />
  184. <img src="https://pnpm.io/img/users/cerbos.svg" width="90" alt="Cerbos" />
  185. </picture>
  186. </a>
  187. </td>
  188. </tr>
  189. <tr>
  190. <td align="center" valign="middle">
  191. <a href="https://vlt.sh/?utm_source=pnpm&utm_medium=readme" target="_blank">
  192. <picture>
  193. <source media="(prefers-color-scheme: light)" srcset="https://pnpm.io/img/users/vlt.svg" />
  194. <source media="(prefers-color-scheme: dark)" srcset="https://pnpm.io/img/users/vlt_light.svg" />
  195. <img src="https://pnpm.io/img/users/vlt.svg" width="70" alt="vlt" />
  196. </picture>
  197. </a>
  198. </td>
  199. <td align="center" valign="middle">
  200. <a href="https://vite.dev/?utm_source=pnpm&utm_medium=readme" target="_blank">
  201. <img src="https://pnpm.io/img/users/vitejs.svg" width="32" alt="Vite">
  202. </a>
  203. </td>
  204. <td align="center" valign="middle">
  205. <a href="https://macpaw.com/?utm_source=pnpm&utm_medium=readme" target="_blank">
  206. <picture>
  207. <source media="(prefers-color-scheme: light)" srcset="https://pnpm.io/img/users/macpaw.svg" />
  208. <source media="(prefers-color-scheme: dark)" srcset="https://pnpm.io/img/users/macpaw_light.svg" />
  209. <img src="https://pnpm.io/img/users/macpaw.svg" width="100" />
  210. </picture>
  211. </a>
  212. </td>
  213. </tr>
  214. <tr>
  215. <td align="center" valign="middle">
  216. <a href="https://opensource.mercedes-benz.com/?utm_source=pnpm&utm_medium=readme" target="_blank">
  217. <img src="https://pnpm.io/img/users/mercedes.svg" width="32" alt="Vite">
  218. </a>
  219. </td>
  220. </tr>
  221. </tbody>
  222. </table>
  223. Support this project by [becoming a sponsor](https://opencollective.com/pnpm#sponsor).
  224. ## Background
  225. pnpm uses a content-addressable filesystem to store all files from all module directories on a disk.
  226. When using npm, if you have 100 projects using lodash, you will have 100 copies of lodash on disk.
  227. With pnpm, lodash will be stored in a content-addressable storage, so:
  228. 1. If you depend on different versions of lodash, only the files that differ are added to the store.
  229. If lodash has 100 files, and a new version has a change only in one of those files,
  230. `pnpm update` will only add 1 new file to the storage.
  231. 1. All the files are saved in a single place on the disk. When packages are installed, their files are linked
  232. from that single place consuming no additional disk space. Linking is performed using either hard-links or reflinks (copy-on-write).
  233. As a result, you save gigabytes of space on your disk and you have a lot faster installations!
  234. If you'd like more details about the unique `node_modules` structure that pnpm creates and
  235. 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).
  236. 💖 Like this project? Let people know with a [tweet](https://r.pnpm.io/tweet)
  237. ## Installation
  238. For installation options [visit our website](https://pnpm.io/installation).
  239. ## Usage
  240. Just use pnpm in place of npm/Yarn. E.g., install dependencies via:
  241. ```
  242. pnpm install
  243. ```
  244. For more advanced usage, read [pnpm CLI](https://pnpm.io/pnpm-cli) on our website, or run `pnpm help`.
  245. ## Benchmark
  246. pnpm is up to 2x faster than npm and Yarn classic. See all benchmarks [here](https://r.pnpm.io/benchmarks).
  247. Benchmarks on an app with lots of dependencies:
  248. ![](https://pnpm.io/img/benchmarks/alotta-files.svg)
  249. ## Support
  250. - [Frequently Asked Questions](https://pnpm.io/faq)
  251. - [Chat](https://r.pnpm.io/chat)
  252. - [X](https://x.com/pnpmjs)
  253. - [Bluesky](https://bsky.app/profile/pnpm.io)
  254. ## License
  255. [MIT](https://github.com/pnpm/pnpm/blob/main/LICENSE)