在package.json中查找未使用的npm包

有没有办法确定你的package.json文件中是否有不再需要的包?

例如,当试用一个软件包,后来评论或删除代码,但忘记卸载它时,我最终得到了一些可以删除的软件包。

什么将是一个有效的方式来确定一个包是否可以安全地删除?

您可以使用名为depcheck的npm模块。

  1. 安装模块:

    npm install depcheck -g 
  2. 运行它并find未使用的依赖关系:

     depcheck 

这种方法的好处是你不必记住find或者grep命令。

还有一个名为npm-check的包:

NPM-检查

检查过时的,不正确的和未使用的依赖关系。

在这里输入图像说明

这是相当强大,积极发展。 其中一个function是检查未使用的依赖关系 – 对于这一部分,它使用另一个答案中提到的depcheck模块。

最简单的方法是使用npm接口本身:

 $ npm prune 

我在一个正在进行的项目上运行这个项目,结果如下:

 root:~/project $ npm prune unbuild lodash.identity@3.0.0 unbuild whatwg-fetch@0.11.0 unbuild fluxible-addons-react@0.2.5 unbuild chai@3.5.0 unbuild fluxible@1.0.4 unbuild lodash.defaults@4.0.1 unbuild lodash.difference@4.1.1 unbuild sinon@1.15.4 unbuild progress-bar-webpack-plugin@1.6.0 

官方文档 – https://docs.npmjs.com/cli/prune

如果您使用的是像操作系统(Linux,OSX等)的Unix,那么您可以使用findegrep的组合来search包含您的软件包名称的require语句:

 find . -path ./node_modules -prune -o -name "*.js" -exec egrep -ni 'name-of-package' {} \; 

如果您search整个require('name-of-package')语句,请记住使用正确types的引号:

 find . -path ./node_modules -prune -o -name "*.js" -exec egrep -ni 'require("name-of-package")' {} \; 

要么

 find . -path ./node_modules -prune -o -name "*.js" -exec egrep -ni "require('name-of-package')" {} \; 

缺点是它不是完全自动的,即它不会从package.json提取包名并检查它们。 你需要为每个包自己做这个。 由于package.json只是JSON,因此可以通过编写一个使用child_process.exec为每个依赖项运行此命令。 并使之成为一个模块。 并将其添加到NPM回购…