{"id":13406448,"url":"https://github.com/pnpm/pnpm","last_synced_at":"2026-04-16T01:05:07.453Z","repository":{"id":37254441,"uuid":"50565430","full_name":"pnpm/pnpm","owner":"pnpm","description":"Fast, disk space efficient package manager","archived":false,"fork":false,"pushed_at":"2025-05-05T12:18:15.000Z","size":184550,"stargazers_count":31527,"open_issues_count":1848,"forks_count":1118,"subscribers_count":143,"default_branch":"main","last_synced_at":"2025-05-05T15:09:42.550Z","etag":null,"topics":["dependency-manager","install","javascript","modules","node","nodejs","npm","package-manager"],"latest_commit_sha":null,"homepage":"https://pnpm.io","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/pnpm.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":".github/CODEOWNERS","security":"SECURITY.md","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null},"funding":{"github":"pnpm","open_collective":"pnpm","custom":"https://pnpm.io/crypto-donations"}},"created_at":"2016-01-28T07:40:43.000Z","updated_at":"2025-05-05T14:23:24.000Z","dependencies_parsed_at":"2023-10-17T01:19:38.144Z","dependency_job_id":"772f08be-d444-493f-8d58-89b2ac4b876b","html_url":"https://github.com/pnpm/pnpm","commit_stats":{"total_commits":9238,"total_committers":294,"mean_commits":"31.421768707482993","dds":0.1840225156960381,"last_synced_commit":"2abb7153000f341a905298beedb73c86e266c844"},"previous_names":["rstacruz/pnpm"],"tags_count":1787,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pnpm%2Fpnpm","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pnpm%2Fpnpm/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pnpm%2Fpnpm/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pnpm%2Fpnpm/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/pnpm","download_url":"https://codeload.github.com/pnpm/pnpm/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":253000604,"owners_count":21838372,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["dependency-manager","install","javascript","modules","node","nodejs","npm","package-manager"],"created_at":"2024-07-30T19:02:30.584Z","updated_at":"2026-04-16T01:05:07.436Z","avatar_url":"https://github.com/pnpm.png","language":"TypeScript","readme":"[简体中文](https://pnpm.io/zh/) |\n[日本語](https://pnpm.io/ja/) |\n[한국어](https://pnpm.io/ko/) |\n[Italiano](https://pnpm.io/it/) |\n[Português Brasileiro](https://pnpm.io/pt/)\n\n\u003cpicture\u003e\n  \u003csource media=\"(prefers-color-scheme: light)\" srcset=\"https://i.imgur.com/qlW1eEG.png\"\u003e\n  \u003csource media=\"(prefers-color-scheme: dark)\"  srcset=\"https://i.imgur.com/qlW1eEG.png\"\u003e\n  \u003cimg src=\"https://i.imgur.com/qlW1eEG.png\" alt=\"pnpm\"\u003e\n\u003c/picture\u003e\n\nFast, disk space efficient package manager:\n\n* **Fast.** Up to 2x faster than the alternatives (see [benchmark](#benchmark)).\n* **Efficient.** Files inside `node_modules` are linked from a single content-addressable storage.\n* **[Great for monorepos](https://pnpm.io/workspaces).**\n* **Strict.** A package can access only dependencies that are specified in its `package.json`.\n* **Deterministic.** Has a lockfile called `pnpm-lock.yaml`.\n* **Works as a Node.js version manager.** See [pnpm runtime](https://pnpm.io/11.x/cli/runtime).\n* **Works everywhere.** Supports Windows, Linux, and macOS.\n* **Battle-tested.** Used in production by teams of [all sizes](https://pnpm.io/workspaces#usage-examples) since 2016.\n* [See the full feature comparison with npm and Yarn](https://pnpm.io/feature-comparison).\n\nTo quote the [Rush](https://rushjs.io/) team:\n\n\u003e 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.\n\n[![npm version](https://img.shields.io/npm/v/pnpm.svg?label=latest)](https://github.com/pnpm/pnpm/releases/latest)\n[![OpenCollective](https://opencollective.com/pnpm/backers/badge.svg)](https://opencollective.com/pnpm)\n[![OpenCollective](https://opencollective.com/pnpm/sponsors/badge.svg)](https://opencollective.com/pnpm)\n[![X Follow](https://img.shields.io/twitter/follow/pnpmjs.svg?style=social\u0026label=Follow)](https://x.com/intent/follow?screen_name=pnpmjs\u0026region=follow_link)\n[![Stand With Ukraine](https://raw.githubusercontent.com/vshymanskyy/StandWithUkraine/main/badges/StandWithUkraine.svg)](https://stand-with-ukraine.pp.ua)\n\n\u003c!-- sponsors --\u003e\n\n## Platinum Sponsors\n\n\u003ctable\u003e\n  \u003ctbody\u003e\n    \u003ctr\u003e\n      \u003ctd align=\"center\" valign=\"middle\"\u003e\n        \u003ca href=\"https://bit.cloud/?utm_source=pnpm\u0026utm_medium=readme\" target=\"_blank\"\u003e\u003cimg src=\"https://pnpm.io/img/users/bit.svg\" width=\"80\" alt=\"Bit\"\u003e\u003c/a\u003e\n      \u003c/td\u003e\n    \u003c/tr\u003e\n  \u003c/tbody\u003e\n\u003c/table\u003e\n\n## Gold Sponsors\n\n\u003ctable\u003e\n  \u003ctbody\u003e\n    \u003ctr\u003e\n      \u003ctd align=\"center\" valign=\"middle\"\u003e\n        \u003ca href=\"https://sanity.io/?utm_source=pnpm\u0026utm_medium=readme\" target=\"_blank\"\u003e\n          \u003cpicture\u003e\n            \u003csource media=\"(prefers-color-scheme: light)\" srcset=\"https://pnpm.io/img/users/sanity.svg\" /\u003e\n            \u003csource media=\"(prefers-color-scheme: dark)\" srcset=\"https://pnpm.io/img/users/sanity_light.svg\" /\u003e\n            \u003cimg src=\"https://pnpm.io/img/users/sanity.svg\" width=\"120\" alt=\"Sanity\" /\u003e\n          \u003c/picture\u003e\n        \u003c/a\u003e\n      \u003c/td\u003e\n      \u003ctd align=\"center\" valign=\"middle\"\u003e\n        \u003ca href=\"https://discord.com/?utm_source=pnpm\u0026utm_medium=readme\" target=\"_blank\"\u003e\n          \u003cpicture\u003e\n            \u003csource media=\"(prefers-color-scheme: light)\" srcset=\"https://pnpm.io/img/users/discord.svg\" /\u003e\n            \u003csource media=\"(prefers-color-scheme: dark)\" srcset=\"https://pnpm.io/img/users/discord_light.svg\" /\u003e\n            \u003cimg src=\"https://pnpm.io/img/users/discord.svg\" width=\"220\" alt=\"Discord\" /\u003e\n          \u003c/picture\u003e\n        \u003c/a\u003e\n      \u003c/td\u003e\n      \u003ctd align=\"center\" valign=\"middle\"\u003e\n        \u003ca href=\"https://vite.dev/?utm_source=pnpm\u0026utm_medium=readme\" target=\"_blank\"\u003e\u003cimg src=\"https://pnpm.io/img/users/vitejs.svg\" width=\"42\" alt=\"Vite\"\u003e\u003c/a\u003e\n      \u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003ctd align=\"center\" valign=\"middle\"\u003e\n        \u003ca href=\"https://serpapi.com/?utm_source=pnpm\u0026utm_medium=readme\" target=\"_blank\"\u003e\n          \u003cpicture\u003e\n            \u003csource media=\"(prefers-color-scheme: light)\" srcset=\"https://pnpm.io/img/users/serpapi_dark.svg\" /\u003e\n            \u003csource media=\"(prefers-color-scheme: dark)\" srcset=\"https://pnpm.io/img/users/serpapi_light.svg\" /\u003e\n            \u003cimg src=\"https://pnpm.io/img/users/serpapi_dark.svg\" width=\"160\" alt=\"SerpApi\" /\u003e\n          \u003c/picture\u003e\n        \u003c/a\u003e\n      \u003c/td\u003e\n      \u003ctd align=\"center\" valign=\"middle\"\u003e\n        \u003ca href=\"https://coderabbit.ai/?utm_source=pnpm\u0026utm_medium=readme\" target=\"_blank\"\u003e\n          \u003cpicture\u003e\n            \u003csource media=\"(prefers-color-scheme: light)\" srcset=\"https://pnpm.io/img/users/coderabbit.svg\" /\u003e\n            \u003csource media=\"(prefers-color-scheme: dark)\" srcset=\"https://pnpm.io/img/users/coderabbit_light.svg\" /\u003e\n            \u003cimg src=\"https://pnpm.io/img/users/coderabbit.svg\" width=\"220\" alt=\"CodeRabbit\" /\u003e\n          \u003c/picture\u003e\n        \u003c/a\u003e\n      \u003c/td\u003e\n      \u003ctd align=\"center\" valign=\"middle\"\u003e\n        \u003ca href=\"https://stackblitz.com/?utm_source=pnpm\u0026utm_medium=readme\" target=\"_blank\"\u003e\n          \u003cpicture\u003e\n            \u003csource media=\"(prefers-color-scheme: light)\" srcset=\"https://pnpm.io/img/users/stackblitz.svg\" /\u003e\n            \u003csource media=\"(prefers-color-scheme: dark)\" srcset=\"https://pnpm.io/img/users/stackblitz_light.svg\" /\u003e\n            \u003cimg src=\"https://pnpm.io/img/users/stackblitz.svg\" width=\"190\" alt=\"Stackblitz\" /\u003e\n          \u003c/picture\u003e\n        \u003c/a\u003e\n      \u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003ctd align=\"center\" valign=\"middle\"\u003e\n        \u003ca href=\"https://workleap.com/?utm_source=pnpm\u0026utm_medium=readme\" target=\"_blank\"\u003e\n          \u003cpicture\u003e\n            \u003csource media=\"(prefers-color-scheme: light)\" srcset=\"https://pnpm.io/img/users/workleap.svg\" /\u003e\n            \u003csource media=\"(prefers-color-scheme: dark)\" srcset=\"https://pnpm.io/img/users/workleap_light.svg\" /\u003e\n            \u003cimg src=\"https://pnpm.io/img/users/workleap.svg\" width=\"190\" alt=\"Workleap\" /\u003e\n          \u003c/picture\u003e\n        \u003c/a\u003e\n      \u003c/td\u003e\n      \u003ctd align=\"center\" valign=\"middle\"\u003e\n        \u003ca href=\"https://nx.dev/?utm_source=pnpm\u0026utm_medium=readme\" target=\"_blank\"\u003e\n          \u003cpicture\u003e\n            \u003csource media=\"(prefers-color-scheme: light)\" srcset=\"https://pnpm.io/img/users/nx.svg\" /\u003e\n            \u003csource media=\"(prefers-color-scheme: dark)\" srcset=\"https://pnpm.io/img/users/nx_light.svg\" /\u003e\n            \u003cimg src=\"https://pnpm.io/img/users/nx.svg\" width=\"50\" alt=\"Nx\" /\u003e\n          \u003c/picture\u003e\n        \u003c/a\u003e\n      \u003c/td\u003e\n    \u003c/tr\u003e\n  \u003c/tbody\u003e\n\u003c/table\u003e\n\n## Silver Sponsors\n\n\u003ctable\u003e\n  \u003ctbody\u003e\n    \u003ctr\u003e\n      \u003ctd align=\"center\" valign=\"middle\"\u003e\n        \u003ca href=\"https://replit.com/?utm_source=pnpm\u0026utm_medium=readme\" target=\"_blank\"\u003e\n          \u003cpicture\u003e\n            \u003csource media=\"(prefers-color-scheme: light)\" srcset=\"https://pnpm.io/img/users/replit.png\" /\u003e\n            \u003csource media=\"(prefers-color-scheme: dark)\" srcset=\"https://pnpm.io/img/users/replit_light.png\" /\u003e\n            \u003cimg src=\"https://pnpm.io/img/users/replit.png\" width=\"140\" alt=\"Replit\" /\u003e\n          \u003c/picture\u003e\n        \u003c/a\u003e\n      \u003c/td\u003e\n      \u003ctd align=\"center\" valign=\"middle\"\u003e\n        \u003ca href=\"https://cybozu.co.jp/?utm_source=pnpm\u0026utm_medium=readme\" target=\"_blank\"\u003e\u003cimg src=\"https://pnpm.io/img/users/cybozu.svg\" width=\"70\" alt=\"Cybozu\"\u003e\u003c/a\u003e\n      \u003c/td\u003e\n      \u003ctd align=\"center\" valign=\"middle\"\u003e\n        \u003ca href=\"https://devowl.io/?utm_source=pnpm\u0026utm_medium=readme\" target=\"_blank\"\u003e\u003cimg src=\"https://pnpm.io/img/users/devowlio.svg\" width=\"100\" alt=\"devowl.io\"\u003e\u003c/a\u003e\n      \u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003ctd align=\"center\" valign=\"middle\"\u003e\n        \u003ca href=\"https://uscreen.de/?utm_source=pnpm\u0026utm_medium=readme\" target=\"_blank\"\u003e\n          \u003cpicture\u003e\n            \u003csource media=\"(prefers-color-scheme: light)\" srcset=\"https://pnpm.io/img/users/uscreen.svg\" /\u003e\n            \u003csource media=\"(prefers-color-scheme: dark)\" srcset=\"https://pnpm.io/img/users/uscreen_light.svg\" /\u003e\n            \u003cimg src=\"https://pnpm.io/img/users/uscreen.svg\" width=\"180\" alt=\"u|screen\" /\u003e\n          \u003c/picture\u003e\n        \u003c/a\u003e\n      \u003c/td\u003e\n      \u003ctd align=\"center\" valign=\"middle\"\u003e\n        \u003ca href=\"https://www.leniolabs.com/?utm_source=pnpm\u0026utm_medium=readme\" target=\"_blank\"\u003e\u003cimg src=\"https://pnpm.io/img/users/leniolabs.jpg\" width=\"40\" alt=\"Leniolabs_\"\u003e\u003c/a\u003e\n      \u003c/td\u003e\n      \u003ctd align=\"center\" valign=\"middle\"\u003e\n        \u003ca href=\"https://depot.dev/?utm_source=pnpm\u0026utm_medium=readme\" target=\"_blank\"\u003e\n          \u003cpicture\u003e\n            \u003csource media=\"(prefers-color-scheme: light)\" srcset=\"https://pnpm.io/img/users/depot.svg\" /\u003e\n            \u003csource media=\"(prefers-color-scheme: dark)\" srcset=\"https://pnpm.io/img/users/depot_light.svg\" /\u003e\n            \u003cimg src=\"https://pnpm.io/img/users/depot.svg\" width=\"100\" alt=\"Depot\" /\u003e\n          \u003c/picture\u003e\n        \u003c/a\u003e\n      \u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003ctd align=\"center\" valign=\"middle\"\u003e\n        \u003ca href=\"https://cerbos.dev/?utm_source=pnpm\u0026utm_medium=readme\" target=\"_blank\"\u003e\n          \u003cpicture\u003e\n            \u003csource media=\"(prefers-color-scheme: light)\" srcset=\"https://pnpm.io/img/users/cerbos.svg\" /\u003e\n            \u003csource media=\"(prefers-color-scheme: dark)\" srcset=\"https://pnpm.io/img/users/cerbos_light.svg\" /\u003e\n            \u003cimg src=\"https://pnpm.io/img/users/cerbos.svg\" width=\"90\" alt=\"Cerbos\" /\u003e\n          \u003c/picture\u003e\n        \u003c/a\u003e\n      \u003c/td\u003e\n      \u003ctd align=\"center\" valign=\"middle\"\u003e\n        \u003ca href=\"https://time.now/?utm_source=pnpm\u0026utm_medium=readme\" target=\"_blank\"\u003e⏱️ Time.now\u003c/a\u003e\n      \u003c/td\u003e\n    \u003c/tr\u003e\n  \u003c/tbody\u003e\n\u003c/table\u003e\n\n\u003c!-- sponsors end --\u003e\n\nSupport this project by [becoming a sponsor](https://opencollective.com/pnpm#sponsor).\n\n## Background\n\npnpm uses a content-addressable filesystem to store all files from all module directories on a disk.\nWhen using npm, if you have 100 projects using lodash, you will have 100 copies of lodash on disk.\nWith pnpm, lodash will be stored in a content-addressable storage, so:\n\n1. If you depend on different versions of lodash, only the files that differ are added to the store.\n  If lodash has 100 files, and a new version has a change only in one of those files,\n  `pnpm update` will only add 1 new file to the storage.\n1. All the files are saved in a single place on the disk. When packages are installed, their files are linked\n  from that single place consuming no additional disk space. Linking is performed using either hard-links or reflinks (copy-on-write).\n\nAs a result, you save gigabytes of space on your disk and you have a lot faster installations!\nIf you'd like more details about the unique `node_modules` structure that pnpm creates and\nwhy 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).\n\n💖 Like this project? Let people know with a [tweet](https://r.pnpm.io/tweet)\n\n## Getting Started\n\n- [Installation](https://pnpm.io/installation)\n- [Usage](https://pnpm.io/pnpm-cli)\n- [Frequently Asked Questions](https://pnpm.io/faq)\n- [X](https://x.com/pnpmjs)\n- [Bluesky](https://bsky.app/profile/pnpm.io)\n\n## Benchmark\n\npnpm is up to 2x faster than npm and Yarn classic. See all benchmarks [here](https://r.pnpm.io/benchmarks).\n\nBenchmarks on an app with lots of dependencies:\n\n![](https://pnpm.io/img/benchmarks/alotta-files.svg)\n\n## License\n\n[MIT](https://github.com/pnpm/pnpm/blob/main/LICENSE)\n\n","funding_links":["https://github.com/sponsors/pnpm","https://opencollective.com/pnpm","https://pnpm.io/crypto-donations"],"categories":["TypeScript","HarmonyOS","Clients","Uncategorized","package-manager","Repository","Table of Contents","GIT 仓库","JavaScript框架","语言资源库","Tools","npm","javascript","Package managers","\u003e 10K ⭐️","Version Managers","Project Management","developer Tools","Recommended With"],"sub_categories":["Windows Manager","Other","Uncategorized","NPM","Language Package Manager","其他_文本生成、文本对话","typescript","Project Manage","Node.js","Blog Posts"],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpnpm%2Fpnpm","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fpnpm%2Fpnpm","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpnpm%2Fpnpm/lists"}