codecamp

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.fsprojpackages.config
Maven Java、Scala pom.xml pom.xml
npm JavaScript package-lock.json package-lock.jsonpackage.json
Python PIP Python requirements.txtpipfile.lock requirements.txtpipfile.locksetup.py*
RubyGems Ruby Gemfile.lock Gemfile.lockGemfile*.gemspec
Yarn JavaScript yarn.lock package.jsonyarn.lock

注:如果在 setup.py 文件中列出 Python 依赖项,我们可能无法剖析和列出项目中的每个依赖项。

延伸阅读

GitHub 列出仓库的复刻
GitHub 探索存储库的依赖关系
温馨提示
下载编程狮App,免费阅读超1000+编程语言教程
取消
确定
目录

GitHub 身份验证

在 GitHub 上管理订阅和通知

在 GitHub 上管理活动的订阅

GitHub 组织和团队

GitHub 管理对组织仓库的 Git 访问

GitHub 计费和付款

GitHub 使用议题和拉取请求进行协作

GitHub 在具有代码质量功能的仓库上进行协作

管理在 GitHub 上的工作

GitHub 建立强大的社区

GitHub 管理仓库

GitHub 自定义 GitHub 工作流程

在 GitHub Marketplace 中购买并安装应用程序

通过 GitHub Jobs 寻找人才

关闭

MIP.setData({ 'pageTheme' : getCookie('pageTheme') || {'day':true, 'night':false}, 'pageFontSize' : getCookie('pageFontSize') || 20 }); MIP.watch('pageTheme', function(newValue){ setCookie('pageTheme', JSON.stringify(newValue)) }); MIP.watch('pageFontSize', function(newValue){ setCookie('pageFontSize', newValue) }); function setCookie(name, value){ var days = 1; var exp = new Date(); exp.setTime(exp.getTime() + days*24*60*60*1000); document.cookie = name + '=' + value + ';expires=' + exp.toUTCString(); } function getCookie(name){ var reg = new RegExp('(^| )' + name + '=([^;]*)(;|$)'); return document.cookie.match(reg) ? JSON.parse(document.cookie.match(reg)[2]) : null; }