• Depcheck 一款非常好用的用于分析项目中依赖关系的工具
  • 发布于 2个月前
  • 1910 热度
    0 评论
Depcheck 是一款用于分析项目中依赖关系的工具,它可以帮助我们找出以下问题:在 package.json 中,每个依赖包如何被使用、哪些依赖包没有用处、哪些依赖包缺失。它是解决前端项目中依赖包清理问题的一个常用工具。Depcheck 不仅可以识别 JavaScript 文件中的依赖关系,还支持以下语法:
1. JavaScript (ES5、ES6 和 ES7)
2. React JSX
3. CoffeeScript
4. TypeScript(需要安装 typescript 依赖)
5. SASS 和 SCSS
6. Vue.js(需要安装 @vue/compiler-sfc 依赖)
可以在终端中运行一下命令来安装 depcheck(需要确保 node.js 的版本大于等于 10.0.0):
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:这些参数用于高级用途。它们提供了一种易于定制文件解析器和依赖项检测的方法。。
--config=[文件名]:一个外部配置文件(见下文)。
例如,想忽略某些包或文件夹,可以在命令后面添加相应的选项:
depcheck --ignores="eslint" --ignore-dirs="dist"
除此之外,我们还可以在项目中增加 depcheck 的配置文件来配置要忽略解析的文件、要解析的文件、要忽略的包等,可以查看官方的文档来进行配置。
Github:https://github.com/depcheck/depcheck
用户评论