You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用npm命令列出直接依赖各自引入的依赖数量并定制输出格式?

实现需求的简便方案

当然有办法实现这个格式输出!下面给你两种简便的方式,不用复杂配置就能搞定:

方案一:使用 npm + jq(简洁高效)

如果你的环境已经安装了jq(一款轻量级JSON处理工具),可以直接用这条组合命令:

npm ls --depth=0 --only=production --json | jq -r '"my-app@\(.version) \(.path)\n" + ( .dependencies | to_entries | map("├── \(.key)@\(.value.version) (\(.value.dependencies | keys | length) dependencies)") | join("\n") )'

命令说明:

  • npm ls --depth=0 --only=production --json:让npm以JSON格式输出生产环境的直接依赖,结构化的数据更容易处理
  • jq部分:负责解析JSON,提取项目名称、版本、路径,然后遍历每个依赖,统计它的直接子依赖数量,最后格式化成你想要的树形输出

方案二:纯Node.js脚本(无需额外工具)

如果不想安装额外工具,利用和npm一起安装的Node.js环境写个简单脚本就能实现:

  1. 在项目根目录创建一个名为count-deps.js的文件,内容如下:
const { execSync } = require('child_process');

try {
  // 获取生产依赖的JSON数据
  const depData = JSON.parse(execSync('npm ls --depth=0 --only=production --json', { encoding: 'utf8' }));

  // 输出项目基础信息
  console.log(`${depData.name}@${depData.version} ${depData.path}`);

  // 遍历处理每个依赖
  const dependencies = depData.dependencies || {};
  for (const [pkgName, pkgInfo] of Object.entries(dependencies)) {
    const subDepCount = Object.keys(pkgInfo.dependencies || {}).length;
    // 可以根据需求调整这里的输出文本,比如把(0 dependencies)改成(no dependencies)
    console.log(`├── ${pkgName}@${pkgInfo.version} (${subDepCount} dependencies)`);
  }
} catch (err) {
  console.error('获取依赖信息出错:', err.message);
}
  1. 在终端运行脚本:
node count-deps.js

这个脚本会自动调用npm获取依赖数据,处理后输出你想要的格式,还加了简单的错误处理,避免意外报错。

内容的提问来源于stack exchange,提问作者Jonathan Bender

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.21 08:41:27