如何清理不在package.json中的包的node_modules文件夹?

假设我使用npm install来安装工程包,该工程包npm install针对要安装的模块查找package.json 。 过了一会儿,我看到我不需要一些特定的模块,并从package.json删除它的依赖。 然后,我从package.json删除了一些其他模块,因为它们不再需要了,而其他模块被replace。

现在我想清理node_modules文件夹,这样只有package.json列出的模块停留在那里,其余的必须node_modules ,像npm clean 。 我知道我可以手动删除它们,但想有一些不错的准备使用糖的function。

我想你正在寻找npm prune

npm prune [<name> [<name ...]]

这个命令删除“无关”的包。 如果提供了一个包名称,那么只有与所提供的名称匹配的包才会被删除。

无关程序包是父程序包的依赖项列表中未列出的程序包。

请参阅文档: https : //docs.npmjs.com/cli/prune

由于其文件夹嵌套,Windows无法删除该文件夹,因为其名称太长。 为了解决这个问题,安装RimRaf:

 npm install rimraf -g rimraf node_modules 

您可以删除您的node_modules /文件夹,然后从package.json重新安装依赖项。

 rm -rf node_modules/ npm install 

这将擦除当前文件夹中的所有已安装的软件包,并仅从package.json安装依赖项。 如果之前已经安装了依赖关系,npm将尝试使用caching版本,避免再次下载依赖关系。

你有没有尝试npm修剪?

它应该卸载你的软件包文件中没有列出的所有东西

https://npmjs.org/doc/cli/npm-prune.html

简单的运行

 rm -r node_modules 

其实你可以用这个删除任何文件夹。

rm -r AnyFolderWhichIsNotDeletableFromShiftDeleteOrDelete

只需打开gitbash移动到文件夹的根目录并运行此命令

希望这会有所帮助。

对于Windows用户,替代解决scheme删除此处列出的文件夹: http : //ask.osify.com/qa/567

其中,一个免费的工具: 长path固定器是很好的尝试: http : //corz.org/windows/software/accessories/Long-Path-Fixer-for-Windows.php

首先全球安装rimraf

 npm install rimraf -g 

使用cmd转到你的node_modules文件夹并应用下面的命令

 rimraf node_modules