[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"project-1663":3},{"id":4,"name":5,"fullName":6,"owner":5,"repo":5,"description":7,"homepage":8,"htmlUrl":9,"language":10,"languages":9,"totalLinesOfCode":9,"stars":11,"forks":12,"watchers":13,"openIssues":14,"contributorsCount":15,"subscribersCount":15,"size":15,"stars1d":16,"stars7d":17,"stars30d":18,"stars90d":15,"forks30d":15,"starsTrendScore":19,"compositeScore":20,"rankGlobal":9,"rankLanguage":9,"license":21,"archived":22,"fork":22,"defaultBranch":23,"hasWiki":22,"hasPages":22,"topics":24,"createdAt":9,"pushedAt":9,"updatedAt":33,"readmeContent":34,"aiSummary":35,"trendingCount":15,"starSnapshotCount":15,"syncStatus":36,"lastSyncTime":37,"discoverSource":38},1663,"pnpm","pnpm\u002Fpnpm","Fast, disk space efficient package manager","https:\u002F\u002Fpnpm.io",null,"Rust",35454,1517,152,2192,0,4,87,535,34,44.54,"MIT License",false,"main",[25,26,27,28,29,30,31,32],"dependency-manager","install","javascript","modules","node","nodejs","npm","package-manager","2026-06-12 02:00:31","[简体中文](https:\u002F\u002Fpnpm.io\u002Fzh\u002F) |\n[日本語](https:\u002F\u002Fpnpm.io\u002Fja\u002F) |\n[한국어](https:\u002F\u002Fpnpm.io\u002Fko\u002F) |\n[Italiano](https:\u002F\u002Fpnpm.io\u002Fit\u002F) |\n[Português Brasileiro](https:\u002F\u002Fpnpm.io\u002Fpt\u002F)\n\n\u003Cpicture>\n  \u003Csource media=\"(prefers-color-scheme: light)\" srcset=\"https:\u002F\u002Fi.imgur.com\u002FqlW1eEG.png\">\n  \u003Csource media=\"(prefers-color-scheme: dark)\"  srcset=\"https:\u002F\u002Fi.imgur.com\u002FqlW1eEG.png\">\n  \u003Cimg src=\"https:\u002F\u002Fi.imgur.com\u002FqlW1eEG.png\" alt=\"pnpm\">\n\u003C\u002Fpicture>\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:\u002F\u002Fpnpm.io\u002Fworkspaces).**\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:\u002F\u002Fpnpm.io\u002F11.x\u002Fcli\u002Fruntime).\n* **Works everywhere.** Supports Windows, Linux, and macOS.\n* **Battle-tested.** Used in production by teams of [all sizes](https:\u002F\u002Fpnpm.io\u002Fworkspaces#usage-examples) since 2016.\n* [See the full feature comparison with npm and Yarn](https:\u002F\u002Fpnpm.io\u002Ffeature-comparison).\n\nTo quote the [Rush](https:\u002F\u002Frushjs.io\u002F) team:\n\n> 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:\u002F\u002Fimg.shields.io\u002Fnpm\u002Fv\u002Fpnpm.svg?label=latest)](https:\u002F\u002Fgithub.com\u002Fpnpm\u002Fpnpm\u002Freleases\u002Flatest)\n[![OpenCollective](https:\u002F\u002Fopencollective.com\u002Fpnpm\u002Fbackers\u002Fbadge.svg)](https:\u002F\u002Fopencollective.com\u002Fpnpm)\n[![OpenCollective](https:\u002F\u002Fopencollective.com\u002Fpnpm\u002Fsponsors\u002Fbadge.svg)](https:\u002F\u002Fopencollective.com\u002Fpnpm)\n[![X Follow](https:\u002F\u002Fimg.shields.io\u002Ftwitter\u002Ffollow\u002Fpnpmjs.svg?style=social&label=Follow)](https:\u002F\u002Fx.com\u002Fintent\u002Ffollow?screen_name=pnpmjs&region=follow_link)\n[![Stand With Ukraine](https:\u002F\u002Fraw.githubusercontent.com\u002Fvshymanskyy\u002FStandWithUkraine\u002Fmain\u002Fbadges\u002FStandWithUkraine.svg)](https:\u002F\u002Fstand-with-ukraine.pp.ua)\n\n\u003C!-- sponsors -->\n\n## Platinum Sponsors\n\n\u003Ctable>\n  \u003Ctbody>\n    \u003Ctr>\n      \u003Ctd align=\"center\" valign=\"middle\">\n        \u003Ca href=\"https:\u002F\u002Fbit.cloud\u002F?utm_source=pnpm&utm_medium=readme\" target=\"_blank\">\u003Cimg src=\"https:\u002F\u002Fpnpm.io\u002Fimg\u002Fusers\u002Fbit.svg\" width=\"80\" alt=\"Bit\">\u003C\u002Fa>\n      \u003C\u002Ftd>\n    \u003C\u002Ftr>\n  \u003C\u002Ftbody>\n\u003C\u002Ftable>\n\n## Gold Sponsors\n\n\u003Ctable>\n  \u003Ctbody>\n    \u003Ctr>\n      \u003Ctd align=\"center\" valign=\"middle\">\n        \u003Ca href=\"https:\u002F\u002Fsanity.io\u002F?utm_source=pnpm&utm_medium=readme\" target=\"_blank\">\n          \u003Cpicture>\n            \u003Csource media=\"(prefers-color-scheme: light)\" srcset=\"https:\u002F\u002Fpnpm.io\u002Fimg\u002Fusers\u002Fsanity.svg\" \u002F>\n            \u003Csource media=\"(prefers-color-scheme: dark)\" srcset=\"https:\u002F\u002Fpnpm.io\u002Fimg\u002Fusers\u002Fsanity_light.svg\" \u002F>\n            \u003Cimg src=\"https:\u002F\u002Fpnpm.io\u002Fimg\u002Fusers\u002Fsanity.svg\" width=\"120\" alt=\"Sanity\" \u002F>\n          \u003C\u002Fpicture>\n        \u003C\u002Fa>\n      \u003C\u002Ftd>\n      \u003Ctd align=\"center\" valign=\"middle\">\n        \u003Ca href=\"https:\u002F\u002Fdiscord.com\u002F?utm_source=pnpm&utm_medium=readme\" target=\"_blank\">\n          \u003Cpicture>\n            \u003Csource media=\"(prefers-color-scheme: light)\" srcset=\"https:\u002F\u002Fpnpm.io\u002Fimg\u002Fusers\u002Fdiscord.svg\" \u002F>\n            \u003Csource media=\"(prefers-color-scheme: dark)\" srcset=\"https:\u002F\u002Fpnpm.io\u002Fimg\u002Fusers\u002Fdiscord_light.svg\" \u002F>\n            \u003Cimg src=\"https:\u002F\u002Fpnpm.io\u002Fimg\u002Fusers\u002Fdiscord.svg\" width=\"220\" alt=\"Discord\" \u002F>\n          \u003C\u002Fpicture>\n        \u003C\u002Fa>\n      \u003C\u002Ftd>\n      \u003Ctd align=\"center\" valign=\"middle\">\n        \u003Ca href=\"https:\u002F\u002Fvite.dev\u002F?utm_source=pnpm&utm_medium=readme\" target=\"_blank\">\u003Cimg src=\"https:\u002F\u002Fpnpm.io\u002Fimg\u002Fusers\u002Fvitejs.svg\" width=\"42\" alt=\"Vite\">\u003C\u002Fa>\n      \u003C\u002Ftd>\n    \u003C\u002Ftr>\n    \u003Ctr>\n      \u003Ctd align=\"center\" valign=\"middle\">\n        \u003Ca href=\"https:\u002F\u002Fserpapi.com\u002F?utm_source=pnpm&utm_medium=readme\" target=\"_blank\">\n          \u003Cpicture>\n            \u003Csource media=\"(prefers-color-scheme: light)\" srcset=\"https:\u002F\u002Fpnpm.io\u002Fimg\u002Fusers\u002Fserpapi_dark.svg\" \u002F>\n            \u003Csource media=\"(prefers-color-scheme: dark)\" srcset=\"https:\u002F\u002Fpnpm.io\u002Fimg\u002Fusers\u002Fserpapi_light.svg\" \u002F>\n            \u003Cimg src=\"https:\u002F\u002Fpnpm.io\u002Fimg\u002Fusers\u002Fserpapi_dark.svg\" width=\"160\" alt=\"SerpApi\" \u002F>\n          \u003C\u002Fpicture>\n        \u003C\u002Fa>\n      \u003C\u002Ftd>\n      \u003Ctd align=\"center\" valign=\"middle\">\n        \u003Ca href=\"https:\u002F\u002Fcoderabbit.ai\u002F?utm_source=pnpm&utm_medium=readme\" target=\"_blank\">\n          \u003Cpicture>\n            \u003Csource media=\"(prefers-color-scheme: light)\" srcset=\"https:\u002F\u002Fpnpm.io\u002Fimg\u002Fusers\u002Fcoderabbit.svg\" \u002F>\n            \u003Csource media=\"(prefers-color-scheme: dark)\" srcset=\"https:\u002F\u002Fpnpm.io\u002Fimg\u002Fusers\u002Fcoderabbit_light.svg\" \u002F>\n            \u003Cimg src=\"https:\u002F\u002Fpnpm.io\u002Fimg\u002Fusers\u002Fcoderabbit.svg\" width=\"220\" alt=\"CodeRabbit\" \u002F>\n          \u003C\u002Fpicture>\n        \u003C\u002Fa>\n      \u003C\u002Ftd>\n      \u003Ctd align=\"center\" valign=\"middle\">\n        \u003Ca href=\"https:\u002F\u002Fstackblitz.com\u002F?utm_source=pnpm&utm_medium=readme\" target=\"_blank\">\n          \u003Cpicture>\n            \u003Csource media=\"(prefers-color-scheme: light)\" srcset=\"https:\u002F\u002Fpnpm.io\u002Fimg\u002Fusers\u002Fstackblitz.svg\" \u002F>\n            \u003Csource media=\"(prefers-color-scheme: dark)\" srcset=\"https:\u002F\u002Fpnpm.io\u002Fimg\u002Fusers\u002Fstackblitz_light.svg\" \u002F>\n            \u003Cimg src=\"https:\u002F\u002Fpnpm.io\u002Fimg\u002Fusers\u002Fstackblitz.svg\" width=\"190\" alt=\"Stackblitz\" \u002F>\n          \u003C\u002Fpicture>\n        \u003C\u002Fa>\n      \u003C\u002Ftd>\n    \u003C\u002Ftr>\n    \u003Ctr>\n      \u003Ctd align=\"center\" valign=\"middle\">\n        \u003Ca href=\"https:\u002F\u002Fworkleap.com\u002F?utm_source=pnpm&utm_medium=readme\" target=\"_blank\">\n          \u003Cpicture>\n            \u003Csource media=\"(prefers-color-scheme: light)\" srcset=\"https:\u002F\u002Fpnpm.io\u002Fimg\u002Fusers\u002Fworkleap.svg\" \u002F>\n            \u003Csource media=\"(prefers-color-scheme: dark)\" srcset=\"https:\u002F\u002Fpnpm.io\u002Fimg\u002Fusers\u002Fworkleap_light.svg\" \u002F>\n            \u003Cimg src=\"https:\u002F\u002Fpnpm.io\u002Fimg\u002Fusers\u002Fworkleap.svg\" width=\"190\" alt=\"Workleap\" \u002F>\n          \u003C\u002Fpicture>\n        \u003C\u002Fa>\n      \u003C\u002Ftd>\n      \u003Ctd align=\"center\" valign=\"middle\">\n        \u003Ca href=\"https:\u002F\u002Fnx.dev\u002F?utm_source=pnpm&utm_medium=readme\" target=\"_blank\">\n          \u003Cpicture>\n            \u003Csource media=\"(prefers-color-scheme: light)\" srcset=\"https:\u002F\u002Fpnpm.io\u002Fimg\u002Fusers\u002Fnx.svg\" \u002F>\n            \u003Csource media=\"(prefers-color-scheme: dark)\" srcset=\"https:\u002F\u002Fpnpm.io\u002Fimg\u002Fusers\u002Fnx_light.svg\" \u002F>\n            \u003Cimg src=\"https:\u002F\u002Fpnpm.io\u002Fimg\u002Fusers\u002Fnx.svg\" width=\"50\" alt=\"Nx\" \u002F>\n          \u003C\u002Fpicture>\n        \u003C\u002Fa>\n      \u003C\u002Ftd>\n    \u003C\u002Ftr>\n  \u003C\u002Ftbody>\n\u003C\u002Ftable>\n\n## Silver Sponsors\n\n\u003Ctable>\n  \u003Ctbody>\n    \u003Ctr>\n      \u003Ctd align=\"center\" valign=\"middle\">\n        \u003Ca href=\"https:\u002F\u002Freplit.com\u002F?utm_source=pnpm&utm_medium=readme\" target=\"_blank\">\n          \u003Cpicture>\n            \u003Csource media=\"(prefers-color-scheme: light)\" srcset=\"https:\u002F\u002Fpnpm.io\u002Fimg\u002Fusers\u002Freplit.png\" \u002F>\n            \u003Csource media=\"(prefers-color-scheme: dark)\" srcset=\"https:\u002F\u002Fpnpm.io\u002Fimg\u002Fusers\u002Freplit_light.png\" \u002F>\n            \u003Cimg src=\"https:\u002F\u002Fpnpm.io\u002Fimg\u002Fusers\u002Freplit.png\" width=\"140\" alt=\"Replit\" \u002F>\n          \u003C\u002Fpicture>\n        \u003C\u002Fa>\n      \u003C\u002Ftd>\n      \u003Ctd align=\"center\" valign=\"middle\">\n        \u003Ca href=\"https:\u002F\u002Fcybozu.co.jp\u002F?utm_source=pnpm&utm_medium=readme\" target=\"_blank\">\u003Cimg src=\"https:\u002F\u002Fpnpm.io\u002Fimg\u002Fusers\u002Fcybozu.svg\" width=\"70\" alt=\"Cybozu\">\u003C\u002Fa>\n      \u003C\u002Ftd>\n      \u003Ctd align=\"center\" valign=\"middle\">\n        \u003Ca href=\"https:\u002F\u002Fdevowl.io\u002F?utm_source=pnpm&utm_medium=readme\" target=\"_blank\">\u003Cimg src=\"https:\u002F\u002Fpnpm.io\u002Fimg\u002Fusers\u002Fdevowlio.svg\" width=\"100\" alt=\"devowl.io\">\u003C\u002Fa>\n      \u003C\u002Ftd>\n    \u003C\u002Ftr>\n    \u003Ctr>\n      \u003Ctd align=\"center\" valign=\"middle\">\n        \u003Ca href=\"https:\u002F\u002Fuscreen.de\u002F?utm_source=pnpm&utm_medium=readme\" target=\"_blank\">\n          \u003Cpicture>\n            \u003Csource media=\"(prefers-color-scheme: light)\" srcset=\"https:\u002F\u002Fpnpm.io\u002Fimg\u002Fusers\u002Fuscreen.svg\" \u002F>\n            \u003Csource media=\"(prefers-color-scheme: dark)\" srcset=\"https:\u002F\u002Fpnpm.io\u002Fimg\u002Fusers\u002Fuscreen_light.svg\" \u002F>\n            \u003Cimg src=\"https:\u002F\u002Fpnpm.io\u002Fimg\u002Fusers\u002Fuscreen.svg\" width=\"180\" alt=\"u|screen\" \u002F>\n          \u003C\u002Fpicture>\n        \u003C\u002Fa>\n      \u003C\u002Ftd>\n      \u003Ctd align=\"center\" valign=\"middle\">\n        \u003Ca href=\"https:\u002F\u002Fwww.leniolabs.com\u002F?utm_source=pnpm&utm_medium=readme\" target=\"_blank\">\u003Cimg src=\"https:\u002F\u002Fpnpm.io\u002Fimg\u002Fusers\u002Fleniolabs.jpg\" width=\"40\" alt=\"Leniolabs_\">\u003C\u002Fa>\n      \u003C\u002Ftd>\n      \u003Ctd align=\"center\" valign=\"middle\">\n        \u003Ca href=\"https:\u002F\u002Fdepot.dev\u002F?utm_source=pnpm&utm_medium=readme\" target=\"_blank\">\n          \u003Cpicture>\n            \u003Csource media=\"(prefers-color-scheme: light)\" srcset=\"https:\u002F\u002Fpnpm.io\u002Fimg\u002Fusers\u002Fdepot.svg\" \u002F>\n            \u003Csource media=\"(prefers-color-scheme: dark)\" srcset=\"https:\u002F\u002Fpnpm.io\u002Fimg\u002Fusers\u002Fdepot_light.svg\" \u002F>\n            \u003Cimg src=\"https:\u002F\u002Fpnpm.io\u002Fimg\u002Fusers\u002Fdepot.svg\" width=\"100\" alt=\"Depot\" \u002F>\n          \u003C\u002Fpicture>\n        \u003C\u002Fa>\n      \u003C\u002Ftd>\n    \u003C\u002Ftr>\n    \u003Ctr>\n      \u003Ctd align=\"center\" valign=\"middle\">\n        \u003Ca href=\"https:\u002F\u002Fcerbos.dev\u002F?utm_source=pnpm&utm_medium=readme\" target=\"_blank\">\n          \u003Cpicture>\n            \u003Csource media=\"(prefers-color-scheme: light)\" srcset=\"https:\u002F\u002Fpnpm.io\u002Fimg\u002Fusers\u002Fcerbos.svg\" \u002F>\n            \u003Csource media=\"(prefers-color-scheme: dark)\" srcset=\"https:\u002F\u002Fpnpm.io\u002Fimg\u002Fusers\u002Fcerbos_light.svg\" \u002F>\n            \u003Cimg src=\"https:\u002F\u002Fpnpm.io\u002Fimg\u002Fusers\u002Fcerbos.svg\" width=\"90\" alt=\"Cerbos\" \u002F>\n          \u003C\u002Fpicture>\n        \u003C\u002Fa>\n      \u003C\u002Ftd>\n      \u003Ctd align=\"center\" valign=\"middle\">\n        \u003Ca href=\"https:\u002F\u002Ftime.now\u002F?utm_source=pnpm&utm_medium=readme\" target=\"_blank\">⏱️ Time.now\u003C\u002Fa>\n      \u003C\u002Ftd>\n    \u003C\u002Ftr>\n  \u003C\u002Ftbody>\n\u003C\u002Ftable>\n\n\u003C!-- sponsors end -->\n\nSupport this project by [becoming a sponsor](https:\u002F\u002Fopencollective.com\u002Fpnpm#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:\u002F\u002Fpnpm.io\u002Fblog\u002F2020\u002F05\u002F27\u002Fflat-node-modules-is-not-the-only-way).\n\n💖 Like this project? Let people know with a [tweet](https:\u002F\u002Fr.pnpm.io\u002Ftweet)\n\n## Getting Started\n\n- [Installation](https:\u002F\u002Fpnpm.io\u002Finstallation)\n- [Usage](https:\u002F\u002Fpnpm.io\u002Fpnpm-cli)\n- [Frequently Asked Questions](https:\u002F\u002Fpnpm.io\u002Ffaq)\n- [X](https:\u002F\u002Fx.com\u002Fpnpmjs)\n- [Bluesky](https:\u002F\u002Fbsky.app\u002Fprofile\u002Fpnpm.io)\n- [Discord](https:\u002F\u002Fr.pnpm.io\u002Fchat)\n\n## Benchmark\n\npnpm is up to 2x faster than npm and Yarn classic. See all benchmarks [here](https:\u002F\u002Fr.pnpm.io\u002Fbenchmarks).\n\nBenchmarks on an app with lots of dependencies:\n\n![](https:\u002F\u002Fpnpm.io\u002Fimg\u002Fbenchmarks\u002Falotta-files.svg)\n\n## License\n\n[MIT](https:\u002F\u002Fgithub.com\u002Fpnpm\u002Fpnpm\u002Fblob\u002Fmain\u002FLICENSE)\n\n","pnpm 是一个快速且节省磁盘空间的包管理器。它通过将 `node_modules` 中的文件链接到单一的内容寻址存储来提高效率，从而实现比其他替代方案快达两倍的速度。此外，pnpm 支持严格的依赖访问控制、确定性的锁文件（`pnpm-lock.yaml`），以及作为 Node.js 版本管理工具的功能。该项目还支持跨平台使用（Windows、Linux 和 macOS），并已在各种规模的团队中得到广泛应用和验证。特别适用于大型单体仓库（monorepos）管理和高频次代码提交的场景。",2,"2026-06-11 02:45:19","top_all"]