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

时间:2018-10-01 15:45:42

标签: pnpm

我使用pnpm来管理npm项目,并且偶然修改了已安装软件包的内容,例如,我清除了node_modules/jquery/dist/jquery.js的内容。

问题是无论我如何重新安装jquery(pnpm install jquery),此文件的内容始终为空。我什至试图从pnpm存储区jquery中删除~/.pnpm-store/,但这是行不通的(也许我删除了错误的软件包)

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

1 个答案:

答案 0 :(得分:2)

{我的答案将涵盖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,它会打印出突变包装的列表