Skip to content

源码依赖

真实依赖树

真实(源码/包)依赖树代表项目运行时真正依赖的(源码/包),最能反应项目真实情况的结构。

源码不准确:在代码中声明import { get } from "ladash",如果没有使用get,则会被treeShaking掉,或者React框架会在每一个jsx文件上方自动加入import React from "react",这些情况都会导致声明和真实依赖不准确的情况

包不准确:在 package.json 中声明了 "chalk": "^4.1.2",其中 ^ 表示兼容版本,具体兼容哪些版本取决于语义化版本规则。以 ^4.1.2 为例,表示兼容 >=4.1.2 <5.0.0 的所有版本,因此实际运行时可能安装的是 4.1.54.5.0 等符合范围的最新版本。

函数粒度

当一个文件有多个导出时,DepSpy会通过Git改动,精准判断哪些导出收到了影响,不会简单的认为一个文件改动,所有导出都收到影响,收束了影响面,极大的降低了开发者Review代码的心智负担。

双视角

一共有两种情况会影响文件,两种情况衍生出两种分析改动的视角

  • 影响源(正向)

    文件本身源码发生了改动,专注于改动文件本身,其子节点是导入了该改动文件的依赖文件,方便我们快速锁定该文件的影响面。

  • 影响面(反向)

    文件本身源码没有改动,但是导入的依赖发生了改动,专注于导入的依赖发生了改动的文件,其子节点就是该文件导入的变动文件,方便我们快速锁定该文件的影响源。