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

时间:2014-12-21 14:31:34

标签: node.js npm

基本上我正在寻找"对面" npm prunethis SO问题。

更具体地说:

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

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

3 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:1)

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

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

这样,当你擦除node_modules目录时,外部本地模块仍然存在。

答案 2 :(得分:0)

正如其他人所指出的,没有原生的npm命令可以做到这一点。

我已经this answer并修改了命令:

$ 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