Skip to content

Command-line toolkit for analyzing Node.js dependencies | 分析 Node.js 项目依赖关系(循环/菱形/多版本)的命令行工具包

License

Notifications You must be signed in to change notification settings

adaelixir/npm-package-pulse

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

54 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Npm Package Pulse

npm-package-pulse 是一个 npm 包依赖分析工具,专注于不同类型依赖的分析脚本。命令行启动后,递归遍历项目 node_modules 分析依赖结构,检测循环依赖、菱形依赖和多版本依赖,输出JSON格式结果
依赖图使用邻接表表示,即 dependencies 对象
a. 循环依赖:包A依赖包B,包B又直接或间接依赖包A的情况(DFS)
时间复杂度:O(N + E),其中 N 是包的数量,E 是依赖关系的数量
b. 菱形依赖:一个包通过不同路径依赖同一个包的不同版本(集合)
时间复杂度:O(N * M),其中 N 是包的数量,M 是每个包的平均版本数
c. 多版本依赖:项目中同时存在一个包的多个版本

npm install -g npm-package-pulse
{
  "cyclicDependencies": [
    ["[email protected]", "[email protected]", "[email protected]", "[email protected]"]
  ],
  "diamondDependencies": [
    {
      "start": "[email protected]",
      "end": "[email protected]",
      "paths": [
        ["[email protected]", "[email protected]", "[email protected]"],
        ["[email protected]", "[email protected]", "[email protected]"]
      ]
    }
  ],
  "multipleVersions": [
    {
      "name": "packageD",
      "versions": ["3.0.0", "3.1.0"]
    }
  ]
}

为了保证包的最简和算法扩展性,采用前后端分离的方式,将可视化代码单独部署在 Vercel,上传结果文件后便可以得到渲染结果
a. 分页懒加载渲染:采用分页懒加载技术,将依赖包数据分页加载到页面中,以优化页面性能和加载速度
b. 交互式可视化:用户可以通过与页面交互(如滚动浏览器窗口和搜索依赖名称)来浏览包的依赖关系,使得依赖关系的探索更加直观和交互性 查看当前项目的依赖信息

About

Command-line toolkit for analyzing Node.js dependencies | 分析 Node.js 项目依赖关系(循环/菱形/多版本)的命令行工具包

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published