[{"data":1,"prerenderedAt":260},["ShallowReactive",2],{"blog-article-\u002Fzh\u002Fblog\u002Fclear-pnpm-store-cache":3},{"id":4,"title":5,"author":6,"body":7,"category":241,"cover":242,"coverAlt":243,"description":244,"draft":245,"extension":246,"meta":247,"navigation":248,"path":249,"publishedAt":250,"seo":251,"stem":252,"tags":253,"topics":256,"translationKey":258,"updatedAt":250,"__hash__":259},"articles_zh\u002Fzh\u002Fblog\u002Fclear-pnpm-store-cache.md","pnpm 缓存占用太大，怎么清理？","Harry",{"type":8,"value":9,"toc":234},"minimark",[10,14,26,31,40,51,54,69,94,101,105,108,122,132,139,143,146,160,169,183,187,196,199,207,214,230],[11,12,13],"p",{},"项目删了，磁盘却没空出多少；顺着目录一找，pnpm 的 store 里还留着不少文件。这不一定是没删干净：pnpm 会把下载过的包放在共享存储里，供不同项目复用，不会随着某个项目一起消失。",[11,15,16,25],{},[17,18,19,20,24],"strong",{},"想先清掉用不上的包，可以用 ",[21,22,23],"code",{},"pnpm store prune","。如果想知道 pnpm 和其他开发工具究竟占了多少空间，可以先用 MangoDisk 扫描，再挑值得清理的部分。"," 不必一上来就删整个 store，更不用动项目源码和锁文件。",[27,28,30],"h2",{"id":29},"用-mangodisk-找出占空间的开发缓存","用 MangoDisk 找出占空间的开发缓存",[11,32,33,34,39],{},"电脑上装过 npm、pnpm、Python、Rust，缓存往往散在不同目录。与其挨个找，不如打开 MangoDisk 的",[35,36,38],"a",{"href":37},"\u002Fzh\u002Fdocs\u002Ffeatures\u002Fdeep-clean","深度清理","，扫描后直接比较各项占用。",[11,41,42],{},[43,44],"img",{"alt":45,"decoding":46,"height":47,"loading":48,"src":49,"width":50},"MangoDisk 深度清理展示 pnpm 等开发工具缓存的大小和路径","async",1233,"lazy","https:\u002F\u002Fassets.mangodisk.app\u002Fimages\u002Fscreenshots\u002Fwindows\u002Fzh\u002Flight-01-deep-cleanup.jpg",1838,[11,52,53],{},"找到 pnpm 缓存项，展开查看目录和大小。如果它只占了一点空间，就没必要急着清；如果已经积累了不少，再根据后面的说明选择整理还是清空。扫描本身不会删除文件。",[11,55,56,57,60,61,64,65,68],{},"MangoDisk 目前覆盖 Windows 的 ",[21,58,59],{},"%LocalAppData%\\pnpm\\store","，以及 macOS 的 ",[21,62,63],{},"~\u002FLibrary\u002Fpnpm\u002Fstore"," 和 ",[21,66,67],{},"~\u002FLibrary\u002FCaches\u002Fpnpm","。改过存储位置的话，先查询当前使用的目录：",[70,71,76],"pre",{"className":72,"code":73,"language":74,"meta":75,"style":75},"language-bash shiki shiki-themes github-light github-dark","pnpm store path\n","bash","",[21,77,78],{"__ignoreMap":75},[79,80,83,87,91],"span",{"class":81,"line":82},"line",1,[79,84,86],{"class":85},"sScJk","pnpm",[79,88,90],{"class":89},"sZZnC"," store",[79,92,93],{"class":89}," path\n",[11,95,96,97,100],{},"这条命令只显示路径。",[17,98,99],{},"MangoDisk 没扫描到自定义目录，不代表那里没有缓存。"," 可以到文件资源管理器或 Finder 中打开返回的路径，确认占用。",[27,102,104],{"id":103},"只想整理不用的包先用-prune","只想整理不用的包，先用 prune",[11,106,107],{},"Windows 打开 PowerShell，macOS 打开终端。等正在进行的安装和构建结束后，运行：",[70,109,111],{"className":72,"code":110,"language":74,"meta":75,"style":75},"pnpm store prune\n",[21,112,113],{"__ignoreMap":75},[79,114,115,117,119],{"class":81,"line":82},[79,116,86],{"class":85},[79,118,90],{"class":89},[79,120,121],{"class":89}," prune\n",[11,123,124,125,131],{},"它会删除 store 中未被引用的包，不经过回收站，不是把整个目录清空。以后切换分支或安装旧版本依赖时，如果又需要这些包，pnpm 会重新下载。",[35,126,130],{"href":127,"rel":128},"https:\u002F\u002Fpnpm.io\u002Fcli\u002Fstore",[129],"nofollow","pnpm 官方文档","也建议偶尔整理即可，不必每次安装后都清一次。",[11,133,134,135,138],{},"执行完还有文件很正常，",[21,136,137],{},"prune"," 的目的本来就不是让目录变空。近期需要离线工作，或者私有软件源暂时连不上，先保留这份缓存，免得之后安装时缺包。",[27,140,142],{"id":141},"想清空缓存要先确认依赖能重新下载","想清空缓存，要先确认依赖能重新下载",[11,144,145],{},"如果你想清掉已确认可重建的缓存，而不只是整理无用包，可以在 MangoDisk 中取消其他项目的选择，只勾选核对过的 pnpm 缓存项，再确认清理。",[11,147,148,154,155,159],{},[17,149,150,151,153],{},"这里和 ",[21,152,137],{}," 不一样：MangoDisk 按选中的缓存目录清理，不会替你逐个判断包是否还被项目使用。"," 清理前先结束相关任务，确认没有混放个人文件，并准备好之后重新下载依赖。删除方式与恢复限制见",[35,156,158],{"href":157},"\u002Fzh\u002Fdocs\u002Fsafety","安全清理指南","。",[11,161,162,163,168],{},"尤其要留意全局虚拟存储：如果项目启用了它，或者全局工具正在使用 store 内的共享依赖，清空后可能需要重新安装才能运行。这种情况不要整目录删除，优先使用当前 pnpm 版本支持的整理方式；拿不准就先保留。",[35,164,167],{"href":165,"rel":166},"https:\u002F\u002Fpnpm.io\u002Fsettings\u002Fnode-modules#enableglobalvirtualstore",[129],"pnpm 的存储设置说明","解释了这种依赖关系。",[11,170,171,174,175,178,179,182],{},[21,172,173],{},"package.json","、",[21,176,177],{},"pnpm-lock.yaml"," 和源码都不属于缓存清理对象。项目里的 ",[21,180,181],{},"node_modules\u002F.pnpm"," 也不是可以随手清空的临时目录，它里面有项目正在使用的依赖。",[27,184,186],{"id":185},"目录看着很大不一定能腾出同样多的空间","目录看着很大，不一定能腾出同样多的空间",[11,188,189,190,195],{},"pnpm 的一个特点是复用文件，而不是每个项目都单独存一份。在使用硬链接的情况下，store 和项目目录可以指向同一份磁盘数据；只删掉其中一处，另一处仍然在用，就不会释放这部分空间。",[35,191,194],{"href":192,"rel":193},"https:\u002F\u002Fpnpm.io\u002Fsymlinked-node-modules-structure",[129],"pnpm 的目录结构说明","有具体示例。",[11,197,198],{},"所以，不要把几个目录显示的容量简单相加，也别因为清完后空间变化不大，就继续删正在用的依赖。以清理前后的磁盘可用空间为准。",[11,200,201,202,206],{},"如果 pnpm 整理完了，硬盘还是紧张，可以用 MangoDisk 的",[35,203,205],{"href":204},"\u002Fzh\u002Fdocs\u002Ffeatures\u002Fdisk-analysis","磁盘空间分析","查看开发目录：究竟是旧项目、构建输出，还是其他工具的缓存占得多。找到大头后再处理，比反复清同一份缓存更有效。",[11,208,209,213],{},[35,210,212],{"href":211},"\u002Fzh","下载 MangoDisk","，把分散的开发缓存放到一个界面里查看和清理。免费开源，无需注册或登录。",[11,215,216,217,221,222,221,226],{},"相关阅读：",[35,218,220],{"href":219},"\u002Fzh\u002Fblog\u002Fclean-npm-cache","npm 缓存清理"," · ",[35,223,225],{"href":224},"\u002Fzh\u002Fblog\u002Fcargo-cache-vs-target-folder","Cargo 缓存与 target 文件夹",[35,227,229],{"href":228},"\u002Fzh\u002Fblog\u002Ftopics\u002Fdeveloper-cleanup","开发者磁盘清理指南",[231,232,233],"style",{},"html pre.shiki code .sScJk, html code.shiki .sScJk{--shiki-default:#6F42C1;--shiki-dark:#B392F0}html pre.shiki code .sZZnC, html code.shiki .sZZnC{--shiki-default:#032F62;--shiki-dark:#9ECBFF}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"title":75,"searchDepth":235,"depth":235,"links":236},2,[237,238,239,240],{"id":29,"depth":235,"text":30},{"id":103,"depth":235,"text":104},{"id":141,"depth":235,"text":142},{"id":185,"depth":235,"text":186},"开发者磁盘清理","\u002Fimages\u002Fblog\u002Fclear-pnpm-store-cache.webp","两个项目文件夹连接共享的软件包托盘，橙色刷子清走一旁的多余方块","用 MangoDisk 查看 pnpm 缓存的大小和路径，分清 store prune 与清空目录的区别，了解清理对项目依赖的影响，找出值得释放的空间。",false,"md",{},true,"\u002Fzh\u002Fblog\u002Fclear-pnpm-store-cache","2026-10-01T11:40:00+08:00",{"title":5,"description":244},"zh\u002Fblog\u002Fclear-pnpm-store-cache",[254,23,255],"pnpm 缓存清理","开发工具缓存",[257],"developer-cleanup","article-clear-pnpm-store-cache","P_eUO158ev1t4oKrYRq6Xds8Ez1xpqV8OJoopsR-5SQ",1790826751288]