在package.json中查找未使用的npm包
有没有办法确定你的package.json文件中是否有不再需要的包?
例如,当试用一个软件包,后来评论或删除代码,但忘记卸载它时,我最终得到了一些可以删除的软件包。
什么将是一个有效的方式来确定一个包是否可以安全地删除?
您可以使用名为depcheck的npm模块。
-
安装模块:
npm install depcheck -g
-
运行它并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
如果您使用的是像操作系统(Linux,OSX等)的Unix,那么您可以使用find
和egrep
的组合来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回购…