GitHub 关于依赖关系图
有关依赖关系图、它支持的生态系统及其如何确定仓库所依赖的软件包的详细信息。
依赖关系图可用性
依赖关系图适用于使用支持的文件格式、以支持的包生态系统定义依赖项的每个公共仓库。 仓库管理员也可对私有仓库设置依赖关系图。
关于依赖关系图
依赖关系图是存储在仓库中的清单文件和锁定文件的摘要。对于每个仓库,它显示:
- 依赖项、它依赖的生态系统和包
- 依赖者,依赖它的仓库和软件包
当您将更改推送到GitHub或将支持的清单或锁定文件添加到GitHub的提交时,依赖关系图将自动更新。此外,当有人将更改推送到您的一个依赖项的仓库中时,该图也会更新。有关受支持的生态系统和清单文件的信息,请参阅下面的“ 支持的包生态系统 ”。
包含的依赖项
依赖关系图包括清单和锁定文件中详述的所有依赖项,或支持的生态系统的同等项。 这包括:
- 在清单或锁定文件中明确定义的直接依赖项
- 这些直接依赖项的间接依赖项,也称为过渡依赖项或子依赖项
依赖性图可以从锁定文件中显式标识间接依赖性,也可以通过检查直接依赖性的依赖性来识别间接依赖性。对于最可靠的依赖关系图, 您应该使用锁定文件(或其等效项),因为它们准确地定义了您当前使用的直接和间接依赖项版本。 如果使用锁定文件,还应确保仓库的所有贡献者都使用相同的版本,这将使您更轻松地测试和调试代码。
Dependents included
对于公共仓库,仅报告依赖于该仓库或其发布的软件包的公共仓库。私有仓库未报告此信息。
使用依赖关系图
您可以使用依赖关系图:
- 探索您的代码所依赖的仓库以及依赖于此的仓库。有关更多信息,请参见“ 探索仓库的依赖项 ”。
- 在单个仪表板中查看组织仓库中使用的依赖项摘要。 更多信息请参阅“查看用于组织的洞察”。
- 查看和更新仓库中有漏洞的依赖项。 依赖关系图将有漏洞的依赖项列在其他依赖项前面。 更多信息请参阅“关于易受攻击的依赖项的警报”。
启用依赖关系图
要生成依赖关系图,GitHub 需要对仓库的依赖项清单和锁定文件的只读访问权限。 依赖关系图自动为所有公共仓库生成,您可以选择为私有仓库启用它。有关为专用仓库启用或禁用它的信息,请参阅 "探索仓库的依赖项."
首次启用依赖关系图时,将立即剖析受支持的生态系统的任何清单和锁定文件。 依赖关系图通常在几分钟之内填充,但对于依赖项很多的仓库,可能需要更长时间。 启用后,每次推送到仓库以及每次推送到图中的其他仓库都会自动更新该图。
支持的包生态系统
建议的格式明确定义哪些版本用于所有直接和所有间接依赖项。 如果使用这些格式,则依赖关系图更准确。它还反映了当前的构建设置,并使依赖关系图能够报告直接和间接依赖关系中的漏洞。 从清单文件(或等效文件)推断出的间接依赖关系不包括在检查脆弱性依赖关系中。
包管理器 | 语言 | 建议的格式 | 所有支持的格式 |
---|---|---|---|
Composer | PHP | composer.lock |
|
dotnet CLI |
.NET 语言(C#、C++、F#、VB) | .csproj 、.vbproj 、.nuspec 、.vcxproj 、.fsproj |
.csproj 、.vbproj 、.nuspec 、.vcxproj 、.fsproj 、packages.config |
Maven | Java、Scala | pom.xml |
pom.xml |
npm | JavaScript | package-lock.json |
package-lock.json 、package.json |
Python PIP | Python | requirements.txt 、pipfile.lock |
requirements.txt 、pipfile.lock 、setup.py * |
RubyGems | Ruby | Gemfile.lock |
Gemfile.lock 、Gemfile 、*.gemspec |
Yarn | JavaScript | yarn.lock |
package.json 、yarn.lock |
注:如果在
setup.py
文件中列出 Python 依赖项,我们可能无法剖析和列出项目中的每个依赖项。