9

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

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

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

4

1 回答 1

8

{ 我的回答将涵盖 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打印变异包列表

于 2018-10-01T16:10:44.560 回答