如何从 pnpm 商店中删除软件包,或强制重新下载它?

Fre*_*ind 22 pnpm

我使用 pnpm 来管理 npm 项目,我不小心修改了已安装包的内容,比如说我清除了node_modules/jquery/dist/jquery.js.

问题是无论我如何重新安装jquery( pnpm install jquery),该文件的内容始终是空的。我什至尝试jquery从 pnpm store删除~/.pnpm-store/,但这不起作用(也许我删除了错误的包)

最后,我必须删除 中的所有文件~/.pnpm-store,才能下载所有内容,它解决了我的问题,但我想知道是否有更简单的方法来做到这一点。

Zol*_*han 21

{我的答案将涵盖 pnpm v2.16.2}

简短的回答:跑pnpm install --force。(pnpm update也可能有效)

长答案。当您刚刚运行时pnpm install,pnpm 会将所需的收缩包装文件 ( project/shrinkwrap.yaml) 与当前的收缩包装文件 ( project/node_modules/.shrinkwrap.yaml) 进行比较。它们在你的情况下是相等的,所以node_modules不会被触及。

使用时--force,程序包将被重新验证并从商店重新链接。重新验证意味着检查其完整性。您从 中删除了一个文件jquery,因此验证将失败,并且该包将被重新解压到商店并重新链接到node_modules

或者,您可以删除项目node_modules并运行pnpm install. jquery在将其链接到商店之前,这还会检查其完整性。


话虽如此,我认为pnpm install jquery也应该验证 jquery 的完整性。我们将在 pnpm 存储库中为此创建一个问题。

也许我们可以添加一些额外的命令来重新验证每个包node_modules并重新解压所有修改的依赖项。

当前可用的相关命令是pnpm store status,它打印变异包的列表

  • 是的,它将从存储中删除损坏的文件并从注册表中重新下载它们。 (2认同)