@dword-design/depcheck

中文文档
0.0.12发布于 2025/09/15MITTypeScriptCommonJS近 30 天下载 6336

检查节点模块中的依赖性

中文使用文档
文档目录14 节
  1. 状态
  2. 安装
  3. 语法支持
  4. 特别
  5. 使用量
  6. 使用配置文件
  7. API 密码
  8. 示例
  9. 假警报
  10. 更改日志
  11. 贡献者
  12. 代码贡献者
  13. 财政捐助者
  14. 许可证

调试

Depcheck 是一个用于分析项目中的依赖性的工具,用于查看每个依赖性是如何使用的,哪些依赖性是无用的,哪些依赖性是缺失的 package.json。 。 。 .

状态

Build Status Financial Contributors on Open Collective Build status codecov.io

Dependencies

安装

npm install -g depcheck

或者仅仅使用 npx 数据 它是一个捆绑在一起的软件包跑取器 npm数字 :

$ npx depcheck

通知 : depcheck 需要节点.js \\ 10.

语法支持

Depcheck 不仅承认JavaScript文件中的依赖性,而且支持这些语法:

要通过外部依赖获得语法支持,请明确安装相应的软件包. 例如,对于 TypeScript 用户,请用 typescript 软件包 :

npm install -g depcheck typescript

特别

这个 特别 组件用于确认上述语法文件中通常没有使用的依赖关系。 下列情况由特长支持:

一个特殊的逻辑是不完美的。 也许有 错误警报如果发生这种情况,请给我们打开一个问题.

使用量

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许可证.

版本与发布记录

@dword-design/depcheck 共发布 12 个版本,首次发布于 2022/11/24;过去 12 个月发布了 0 个版本。

版本发布日期距今
0.0.12latest2025/09/151.2 年前
0.0.112025/08/081.3 年前
0.0.102025/08/071.3 年前
0.0.92025/08/031.3 年前
0.0.82025/08/031.3 年前
0.0.72024/01/182 年前

关于 @dword-design/depcheck 的常见问题

@dword-design/depcheck 是什么?

检查节点模块中的依赖性

如何安装 @dword-design/depcheck?

在项目目录运行 npm install @dword-design/depcheck,或使用 pnpm add / yarn add / bun add。它还提供命令行工具 depcheck,可以用 npx depcheck 直接运行。

@dword-design/depcheck 支持 TypeScript 吗?

支持。包内自带 TypeScript 类型声明(package.json 声明了 types 入口),安装后即可获得类型提示,无需再安装 @types 包。

@dword-design/depcheck 支持 ESM 还是 CommonJS?

以 CommonJS 形式发布,可以直接 require();在 ES Module 项目中也可以用 import 引入(Node.js 会把 module.exports 作为默认导出)。

@dword-design/depcheck 需要什么版本的 Node.js?

package.json 的 engines 字段要求 Node.js >=10。版本不符时 npm 默认只给出警告,开启 engine-strict 后会拒绝安装。

@dword-design/depcheck 可以商用吗?

@dword-design/depcheck 使用 MIT 许可。宽松许可:允许商业使用、修改和再分发,通常只需在分发时保留原版权与许可声明。以上为概括,不构成法律意见,请以许可原文为准。

@dword-design/depcheck 的下载量有多少?

根据 npm 官方下载统计,@dword-design/depcheck 在 2026/10/13 – 2026/11/11 这 30 天内被下载 6,336 次,日均约 211 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入,适合横向比较热度,不能直接等同于使用人数。

@dword-design/depcheck 还在维护吗?

最新版本 0.0.12 发布于 2025/09/15(1.2 年前);至今共发布 12 个版本,其中过去 12 个月发布了 0 个;首次发布于 2022/11/24。发布频率只是参考信号:功能稳定的工具可能很少需要更新,建议结合源码仓库的 issue 和提交记录判断。