调试
Depcheck 是一个用于分析项目中的依赖性的工具,用于查看每个依赖性是如何使用的,哪些依赖性是无用的,哪些依赖性是缺失的 package.json。 。 。 .
状态
安装
npm install -g depcheck
或者仅仅使用 npx 数据 它是一个捆绑在一起的软件包跑取器 npm数字 :
$ npx depcheck
通知 : depcheck 需要节点.js \\ 10.
语法支持
Depcheck 不仅承认JavaScript文件中的依赖性,而且支持这些语法:
- Java脚本(ES5,ES6和ES7)
- 反应JSX
- 咖啡脚本
- 类型脚本 (与
typescript扶养) - 索马里和索马里
- Vue.js (英语) (与
@vue/compiler-sfc扶养)
要通过外部依赖获得语法支持,请明确安装相应的软件包. 例如,对于 TypeScript 用户,请用 typescript 软件包 :
npm install -g depcheck typescript
特别
这个 特别 组件用于确认上述语法文件中通常没有使用的依赖关系。 下列情况由特长支持:
babel- 说吧 宝贝 预设和插件bin- npm命令、Travis脚本或其他CI脚本中使用的依赖commitizen- 说吧 提交 配置适配器eslint- 说吧 ESLint 语录 配置预设、解析和插件feross-standard- 说吧 费罗斯标准 格式解析器gatsby- 说吧 盖茨比 配置解析器gulp-load-plugins- 说吧 废载插件 懒惰已装入的插件husky- 说吧 胡斯基 配置解析器istanbul- 说吧 伊斯坦布尔尼克 配置扩展jest- 说吧 欢乐 属性在 游戏配置karma- 说吧 因果关系 配置框架、浏览器、预处理器和记者lint-staged- 说吧 阶段化 配置解析器mocha- 说吧 摩诃迦叶 明确需要的依赖关系prettier- 说吧 高级 配置模块tslint- 说吧 TSLint 图像 配置预设、解析和插件ttypescript- 说吧 类型标记 变压器webpack- 说吧 网络软件包 装载器serverless- 说吧 无服务器 插件
一个特殊的逻辑是不完美的。 也许有 错误警报如果发生这种情况,请给我们打开一个问题.
使用量
depcheck [directory] [arguments]
这个 directory 参数是工程的根目录(其中 package.json 文件为). 如果未指定,则默认为当前目录.
所有论点都是可选的:
--ignore-bin-package=[true|false]: 显示解接是否忽略包含 bin 条目的包的旗帜 。 默认值为 false。 。 。 .
--skip-missing=[true|false]: 标记以显示是否跳过缺失依赖的计算 。 默认值为 false。 。 。 .
--jsonJSON的输出结果 在未指定时, 取消对人友好格式的输出 .
--oneline: 输出结果作为空格分隔字符串. 用于复制/粘贴.
--ignores:包含要忽略的包名的逗号分隔阵列。 可以是光泽的表达方式. 示例, --ignores="eslint,babel-*"。 。 。 .
--ignore-dirs: 已删除, 改用被忽略的标签 。 包含要忽略的目录名称的逗号分隔阵列 。 示例, --ignore-dirs=dist,coverage。 。 。 .
--ignore-path: 描述要忽略的文件的图案的文件路径 。 文件必须匹配.gitignore 光谱实例, --ignore-path=.eslintignore。 。 。 .
--ignore-patterns:逗号分离的图案描述要忽略的文件. 模式必须匹配.gitignore 光谱实例, --ignore-patterns=build/Release,dist,coverage,*.log。 。 。 .
--quiet:压制"不拆放问题"日志. 在有多个软件包的单雷波中有用,只关注有问题的软件包.
--help: 显示帮助信息 .
--parsers, (中文(简体) ), --detectors 财务报告和审定财务报表 --specials:这些论据是供高级使用的. 它们为自定义文件解析器和依赖检测提供了方便的方法. 检查 可插件设计文档 更多信息.
--config=[filename]: 一个外部配置文件(见下文).
使用配置文件
Depcheck可以使用rc配置文件. 为此,在您的项目软件包.json文件夹中创建.depcheckrc文件,并用YAML,JSON,和JavaScript格式设置CLI密钥.
例如,CLI的论点 --ignores="eslint,babel-*" --skip-missing=true 改为:
.depcheckrc (中文(简体) )
ignores: ["eslint", "babel-*"]
skip-missing: true
重要内容: 如果提供 CLI 参数与配置文件参数相冲突,则 CLI 参数将优先于 rc 文件参数.
Rc配置文件也可以包含以下扩展: .json, (中文(简体) ), .yaml, (中文(简体) ), .yml。 。 。 .
API 密码
向 depcheck 用于编程的函数:
import depcheck from 'depcheck';
const options = {
ignoreBinPackage: false, // ignore the packages with bin entry
skipMissing: false, // skip calculation of missing dependencies
ignorePatterns: [
// files matching these patterns will be ignored
'sandbox',
'dist',
'bower_components',
],
ignoreMatches: [
// ignore dependencies that matches these globs
'grunt-*',
],
parsers: {
// the target parsers
'**/*.js': depcheck.parser.es6,
'**/*.jsx': depcheck.parser.jsx,
},
detectors: [
// the target detectors
depcheck.detector.requireCallExpression,
depcheck.detector.importDeclaration,
],
specials: [
// the target special parsers
depcheck.special.eslint,
depcheck.special.webpack,
],
package: {
// may specify dependencies instead of parsing package.json
dependencies: {
lodash: '^4.17.15',
},
devDependencies: {
eslint: '^6.6.0',
},
peerDependencies: {},
optionalDependencies: {},
},
};
depcheck('/path/to/your/project', options).then((unused) => {
console.log(unused.dependencies); // an array containing the unused dependencies
console.log(unused.devDependencies); // an array containing the unused devDependencies
console.log(unused.missing); // a lookup containing the dependencies missing in `package.json` and where they are used
console.log(unused.using); // a lookup indicating each dependency is used by which files
console.log(unused.invalidFiles); // files that cannot access or parse
console.log(unused.invalidDirs); // directories that cannot access
});
示例
以下示例检查了以下 /path/to/my/project 文件夹 :
$> depcheck /path/to/my/project
Unused dependencies
* underscore
Unused devDependencies
* jasmine
Missing dependencies
* lodash
发现:
- 依赖性
underscore将在package.json文件,但没有被任何代码使用. - 依赖性
jasmine将在package.json文件,但没有被任何代码使用. - 依赖性
lodash在代码中某处使用,但没有在代码中声明package.json文档.
请注意,如果子文件夹有 package.json 文件,它被视为另一个工程,应当通过另一个调试命令检查.
然而,以下例子检查了JSON blob的同一项目的产出。 Depcheck的JSON输出在一行中,便于管道和计算. 这个 json 命令在管后是用于美化输出的节点.js程序.
$> depcheck /path/to/my/project --json | json
{
"dependencies": [
"underscore"
],
"devDependencies": [
"jasmine"
],
"missing": {
"lodash": [
"/path/to/my/project/file.using.lodash.js"
]
},
"using": {
"react": [
"/path/to/my/project/file.using.react.jsx",
"/path/to/my/project/another.file.using.react.jsx"
],
"lodash": [
"/path/to/my/project/file.using.lodash.js"
]
},
"invalidFiles": {
"/path/to/my/project/file.having.syntax.error.js": "SyntaxError: <call stack here>"
},
"invalidDirs": {
"/path/to/my/project/folder/without/permission": "Error: EACCES, <call stack here>"
}
}
- 这个
dependencies, (中文(简体) ),devDependencies财务报告和审定财务报表missing属性在上一个示例中具有相同的含义. - 这个
using属性是显示每个依赖关系使用的查询. - 价值
missing财务报告和审定财务报表using查找是一个阵列 。 这意味着依赖性可能被许多文件所使用. - 这个
invalidFiles属性包含有语法错误或权限错误的文件。 值是错误细节 。 然而,在搜索中只存储一个错误. - 这个
invalidDirs属性包含有权限错误的目录。 值是错误细节 .
假警报
Depcheck只是走遍了所有文件,并试图根据一些预先定义的规则找到依赖性. 然而,预先界定的规则可能还不够,甚至可能是错误的.
在某些情况下,可能会使用某种依赖,但报告为未使用,或者不使用某种依赖,但报告为缺失。 这些是 假警报 情况.
如果你发现 检查报告 一个虚假的警报,请 打开一个问题 现通知如下:
- 产出来自
depcheck --json命令。 美丽JSON更好. - 哪些依赖关系被视为虚假警报?
- 你怎么利用这些依赖, 这些文件是什么样子的?
更改日志
我们使用 GitHub 发布页面 用于管理更改日志.
贡献者
代码贡献者
这个项目的存在要归功于所有作出贡献的人贡献[ [ ] [ ] ]. ].
财政捐助者
成为财政贡献者并帮助我们维持我们的社区贡献[ . ]
个人
组织
支持这个项目与你的组织。 你的标志会在这里出现 链接到你的网站。 [贡献[ . ]
许可证
MIT许可证.