随着前端项目中使用的依赖包越来越多,而其中一部分依赖包可能并未被项目所使用,手动查找这些依赖包既耗时又繁琐 。那么,有没有工具能够快速地帮助我们识别和清理项目中未使用的依赖包呢?下面就来介绍两个用于检查未使用依赖包的常用工具!
depcheckDepcheck 是一款用于分析项目中依赖关系的工具,它可以帮助我们找出以下问题:在 package.json 中,每个依赖包如何被使用、哪些依赖包没有用处、哪些依赖包缺失 。它是解决前端项目中依赖包清理问题的一个常用工具 。
Depcheck 不仅可以识别 JAVAScript 文件中的依赖关系,还支持以下语法:
- JavaScript (ES5、ES6 和 ES7)
- React JSX
- CoffeeScript
- TypeScript(需要安装 typescript 依赖)
- SASS 和 Scss
- Vue.js(需要安装 @vue/compiler-sfc 依赖)
npm install -g depcheck在安装时,报了以下错误:
文章插图
问题很明显就是权限不够(笔者的电脑是 M1 macBook,这里以 mac 的操作为例),问了一下 ChatGPT,给出的解答如下:

文章插图
这里使用最简单的第一种方案来解决,使用管理员权限来安装:
sudo npm install -g depcheck这样就安装成功了 。接下来在前端项目的根目录下执行以下命令:depcheck可以看到以下没有被引用的依赖包以及缺少依赖的文件:
文章插图
当然,这些依赖并不一定是真的没用到,比如 less、less-loader、file-loader、svgo、TypeScript 等都在项目或者 webpack 等配置中用到了,depcheck 会忽略这些包 。实际上,depcheck 会忽略这些配置文件中使用到的依赖项 。
depcheck 的基本语法如下:
depcheck [directory] [arguments]其中,directory 是项目根目录(即 package.json 文件所在的目录) 。如果未指定,默认为当前目录 。所有参数都是可选的:- --ignore-bin-package=[true|false]:表示 depcheck 是否忽略包含 bin 入口的包 。默认值为 false 。
- --skip-missing=[true|false]:表示 depcheck 是否跳过计算缺失的依赖项 。默认值为 false 。
- --json:以 JSON 格式输出结果 。当未指定时,depcheck 会以友好的格式输出 。
- --oneline:将结果作为用空格分隔的字符串输出 。用于复制/粘贴很有用 。
- --ignores:一个由逗号分隔的数组,包含要忽略的包名称 。它可以是 glob 表达式 。例如,--ignores="eslint,babel-*" 。
- --ignore-dirs:已过时,请改用 ignore-patterns 。一个由逗号分隔的数组,包含要忽略的目录名称 。例如,--ignore-dirs=dist,coverage 。
- --ignore-path:指定包含描述要忽略的文件的模式的文件的路径 。文件必须符合 .gitignore 规范 。例如,--ignore-path=.eslintignore 。
- --ignore-patterns:用逗号分隔的描述要忽略的文件的模式 。模式必须符合 .gitignore 规范 。例如,--ignore-patterns=build/Release,dist,coverage,*.log 。
- --help:显示帮助信息 。
- --parsers、--detectors 和 --specials:这些参数用于高级用途 。它们提供了一种易于定制文件解析器和依赖项检测的方法 。。
- --cnotallow=[文件名]:一个外部配置文件(见下文) 。
depcheck --ignores="eslint" --ignore-dirs="dist"除此之外,我们还可以在项目中增加 depcheck 的配置文件来配置要忽略解析的文件、要解析的文件、要忽略的包等,可以查看官方的文档来进行配置 。Github:https://github.com/depcheck/depcheck
npm-checknpm-check 用于检查项目中的依赖项,并提供有关过期,未使用和缺少依赖项的信息 。npm-check 是基于 depcheck 实现的 。它可以提示项目依赖项的状态,但它只会检查并更新项目的直接依赖项,并不会检查和更新嵌套的依赖项(即项目的依赖项的依赖项)
推荐阅读
- 如何使用ELK进行主机黑客攻击企图的检测
- 微服务如何彻底改变了企业安全?
- 前端和后端哪个工资高
- 如何通过命令行重新启动 Linux
- 如何使用Rust构建基本的HTTP Web Server?
- 抖音前端UI框架开源了,亮瞎我的钛合金!
- web前端工资一般多少
- |鱼有胃吗?如何消化食物?钓鱼时给鱼促消化的方法
- 人际关系|如何在职场中管理和维护自己的职业形象和信誉?
- |《火炬之光:无限》新人攻略!新手前期开荒角色如何选择?
