npm uninstall 会从 package.json 中删除包,但不会从 node_modules 文件夹中删除它

问题描述 投票:0回答:4

我尝试使用删除软件包

npm uninstall (package_name) -s 

它从package.json中删除了包,但没有从node_modules文件夹中删除它,那么如何从node_modules文件夹中删除这些未使用的包?

编辑:

我分享这个问答是因为我个人遇到了这个问题,使用了

npm uninstall
的所有变体,但它没有从node_modules中删除包,所以我分享了帮助我删除大约10个未使用的包的内容,这是npm prune
 

node.js angular npm angular5
4个回答
25
投票

根据 npm 指南,npm uninstall 仅从依赖项中删除包,它不会从 node_modules 中删除包文件夹(无论如何描述中都没有提到)

出于某种原因,我认为 npm uninstall 也会从 node_modules 中删除包文件夹,但它没有发生,经过一些研究,我发现我们应该使用

npm prune
此命令将按照

官方 npm 描述自动从node_modules中删除未使用的包

npm uninstall 只会从您的 package.json 文件,但它不会从您的 node_modules 中删除该包


2
投票
如果您尝试了

npm prune

npm uninstall --save
,但模块仍然存在于 
node_modules
 中,请尝试删除 
node_modules
 文件夹:

rm -rf node_modules
然后运行

npm install
仅使用您需要的模块再次重建您的

node_modules


    


1
投票
我喜欢分享我从项目中卸载软件包时遇到的困难。我相信它可能会为上述答案增加价值。

我在我的一个项目中评估了一个名为

react-router

 的包。后来我决定把它去掉。
我想先删除该包,然后从我的代码中删除它的引用。
我尝试了
npm uninstall
npm prune
。但是,在这两种情况下,它都无法从我的 
node-modules
 文件夹中删除该包。
我从代码中删除了 
react-router
 的引用,然后重试。我仍然无法用上面的命令删除它。
经过一番挖掘,我发现我还安装了使用 
react-router-dom
 包的 
react-router
。所以我必须先使用上面的命令删除它。直到那时,我才能够删除
react-router

我觉得很奇怪,如果引用了包,

npm uninstall

不会删除它们。我想,如果允许的话,我不必通过在类中搜索来手动查找包的用法,而不是 IDE/Lint 可以帮助我更轻松地找到它。


0
投票
我对 npm uninstall 有一次非常奇怪的经历。我有两个包 A 和 B,其中 A 依赖于 B。

如果 A 存在,npm uninstall B 不起作用(如上面 Ripal Barot 观察到的)。

npm uninstall A 有效。接下来,当我卸载 B 时,它会再次重新安装 A (我在所有情况下都使用 --no-save 选项,因为我不希望修改我的 package.json 并且我没有任何 package-lock.json ).

我能找到的唯一解决方案是:

    物理删除包含上述两个包的目录
  1. 从 npm 缓存中删除包(npm cache clear ,我通过 npm cache ls @version 获得。
  2. 使用 npm install 重新安装软件包
我实在找不到其他方法可以去除包裹的痕迹

© www.soinside.com 2019 - 2024. All rights reserved.