我使用pnpm来管理npm项目,并且偶然修改了已安装软件包的内容,例如,我清除了node_modules/jquery/dist/jquery.js
的内容。
问题是无论我如何重新安装jquery(pnpm install jquery
),此文件的内容始终为空。我什至试图从pnpm存储区jquery
中删除~/.pnpm-store/
,但这是行不通的(也许我删除了错误的软件包)
最后,我必须删除~/.pnpm-store
中的所有文件,以下载所有文件,它可以解决我的问题,但是我想知道是否有任何更简单的方法来做到这一点。
答案 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,它会打印出突变包装的列表