如何从package.json中列出的node_modules中删除所有的软件包

基本上我正在寻找npm prune的“相反”或这个问题。

进一步来说:

我正在寻找从我的根package.json文件中列出的所有包清理node_modules文件夹。 在npm install之前重新开始。

我不想简单rm -rf node_modules/的原因是因为我有一些本地模块,我不想被删除。

你不可能一次全部删除你的package.json,你可以编写shell脚本来循环。 或者您可以检查npm ls ,然后删除npm rm <name>或npm手动卸载。 并在package.json中同时更新npm rm <name> --save

更好的方法是将您的永久(本地)模块放在更高级别的目录中:

 -node_modules (local) -my_project |-node_modules (npm) 

这样,当您擦除node_modules目录时,外部本地模块将保留。

正如其他人所指出的,没有本地npm命令来做到这一点。

我已经采取了这个答案,并修改了命令:

 $ npm ls | grep -v 'npm@' | awk '/@/ {print $2}' | awk -F@ '{print $1}' | xargs npm rm 

这列出了你所有的本地软件包,然后npm rm他们一个接一个。

为了方便起见,如果你愿意,你可以在你的package.json添加下面这行:

 "scripts": { "uninstall": "npm ls | grep -v 'npm@' | awk '/@/ {print $2}' | awk -F@ '{print $1}' | xargs npm rm" } 

然后运行

 $ npm run uninstall