1
在复杂的前端项目中,依赖关系错综复杂,如何快速分析和可视化这些依赖?本文为你精选8款实用工具,从源码分析到包管理,从在线工具到命令行,总有一款适合你!

💡 为什么需要依赖分析?

在现代前端开发中,特别是大型项目和 monorepo 架构下,我们经常面临这些问题:

  • 🤔 依赖关系复杂:不知道哪些包被谁依赖
  • 📦 冗余依赖:package.json 中存在未使用的包
  • 🔄 循环依赖:模块间相互引用导致的问题
  • 📈 依赖层级过深:影响项目性能和维护性

通过依赖分析工具,我们可以:

  • ✅ 清理无用依赖,减小项目体积
  • ✅ 发现潜在的架构问题
  • ✅ 优化模块结构
  • ✅ 提升项目可维护性

🛠️ 8款精选依赖分析工具

1️⃣ js-analyzer - 交互式前端依赖分析

🔗 项目地址: https://github.com/chennlang/js-analyzer

✨ 特色功能:

  • 🎯 支持 Vue、React、Svelte、Angular、Node 等所有前端项目
  • 🌙 支持暗黑模式的现代化界面
  • 📊 多维度可视化:图形、饼状图、热词分析

🎪 核心亮点:

功能描述
依赖关系图点击任意包查看其依赖关系,基于项目文件结构排列
包引用统计饼状图展示所有依赖包的引用次数
热词分析统计项目中使用词汇的频率
源码定位直接查看包在哪些文件中被使用

image-2.png

🔧 核心技术:

  • AST 解析:通过抽象语法树提取导入导出信息
  • 多文件支持:JS/TS/JSX/TSX、CSS/Less/Sass、HTML、Vue 文件
  • 智能解析:根据文件后缀自动选择解析器

2️⃣ madge - 极简依赖关系提取器

🔗 项目地址: https://github.com/pahen/madge

✨ 特色功能:

  • 🚀 轻量级命令行工具
  • 📋 支持 CommonJS、AMD、ES6 模块
  • 🎨 可配合 Graphviz 生成可视化图表
npm install -g madge
madge --image deps.svg src/

🔧 核心技术:

  • dependency-tree:底层依赖提取引擎
  • *detective- 系列**:多语言解析支持
  • DFS 算法:深度优先搜索检测循环依赖
  • Graphviz 集成:生成 SVG 矢量图

3️⃣ node-modules-inspector - 全能包分析专家

🔗 项目地址: https://github.com/antfu/node-modules-inspector

✨ 一键启动:

npx node-modules-inspector
# 访问 http://localhost:9999

🎪 强大功能:

  • 🌳 树状依赖图:清晰展示整体依赖结构
  • 📊 多维度分析:深度、类型、作者、许可证、发布时间、体积
  • 🏢 Monorepo 支持:多仓库依赖关系分析

image-7.png

🔧 技术栈:

  • Vue 3 + TypeScript:现代化前端框架
  • pnpm 生态:完整的包管理器支持
  • 多服务集成:npm-stats、publint、arethetypeswrong

4️⃣ dependency-cruiser - 规则驱动的依赖验证器

🔗 项目地址: https://github.com/sverweij/dependency-cruiser

npm install --save-dev dependency-cruiser

✨ 核心优势:

  • 📏 自定义规则:定义项目特定的依赖规范
  • 🔍 循环依赖检测:自动发现潜在问题
  • 🎨 多格式输出:SVG、DOT、JSON 等

dependency-cruiser-react.png

🔧 技术特点:

  • AST 静态分析:深度代码解析
  • 规则引擎:可配置的验证系统
  • 多语言支持:TypeScript、JavaScript、CoffeeScript

5️⃣ 在线可视化工具 - 免安装即用

🌐 npmgraph.js.org - 交互式依赖网络图

npmgraph.png

✨ 特色:

  • 🎯 输入包名即可分析
  • 🕸️ 交互式网络图展示
  • 📊 版本信息和统计数据
  • 🔧 依赖深度过滤

🌐 npm.anvaka.com - 3D 依赖可视化

✨ 特色:

  • 🎮 3D/2D 切换展示
  • 🔍 包依赖树浏览
  • 🎪 交互式图形界面

6️⃣ 现代化工具集

depcheck - 依赖清理专家

npm install -g depcheck
depcheck
  • 🧹 检测未使用的依赖
  • 🔍 发现缺失的依赖声明
  • 📋 支持多种模块系统

knip - TypeScript 项目优化器

npm install --save-dev knip
  • 🎯 专注 TypeScript 和 monorepo
  • 🗑️ 检测未使用的文件、依赖、导出
  • 🔧 与现代构建工具深度集成

7️⃣ 内置命令行工具 - 开箱即用

不需要额外安装,各大包管理器都提供了内置的依赖分析命令:

npm 命令

npm ls                    # 查看依赖树
npm ls --depth=0         # 只显示顶层依赖
npm ls package-name      # 查看特定包的依赖

yarn 命令

yarn list                # 查看依赖树
yarn why package-name    # 查看为什么安装了某个包,显示完整依赖路径

pnpm 命令

pnpm list               # 查看依赖树
pnpm why package-name   # 查看包的依赖路径

📊 工具选择指南

🎯 按使用场景选择

场景推荐工具理由
快速查看依赖npm/yarn/pnpm 内置命令无需安装,开箱即用
项目重构js-analyzer, dependency-cruiser可视化强,规则验证
包清理depcheck, knip专门检测冗余依赖
在线分析npmgraph, anvaka无需本地安装
深度分析node-modules-inspector功能最全面

🔧 按技术特点分类

AST 静态分析类

  • js-analyzer、madge、dependency-cruiser、depcheck
  • 适合:源码级别的深度分析

包管理器集成类

  • node-modules-inspector、knip、内置命令
  • 适合:项目级别的依赖管理

在线可视化类

  • npmgraph、anvaka、TypeFox 工具
  • 适合:快速查看和分享

🎉 总结

依赖分析是前端项目优化的重要环节,选择合适的工具可以大大提升开发效率:

  • 🚀 日常开发:使用内置命令快速查看
  • 🔍 深度分析:选择 node-modules-inspector 或 js-analyzer
  • 🧹 项目清理:使用 depcheck 或 knip
  • 📊 可视化展示:选择在线工具或 dependency-cruiser

🏷️ 标签: 前端工程化 依赖管理 性能优化 工具推荐 JavaScript Node.js


不可能的是
2.3k 声望123 粉丝

stay hungry&&foolish