请求包含上游存储库的程序包版本 - Amazon CodeCatalyst

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

请求包含上游存储库的程序包版本

以下示例显示了包管理器从具有上游存储库的软件包存储库请求 CodeCatalyst 包时可能出现的情况。

在此示例中,软件包管理器(例如)从名downstreamnpm且具有多个上游存储库的软件包存储库中请求软件包版本。当请求包裹时,可能会出现以下情况:

  • 如果 downstream 包含请求的程序包版本,则将该版本返回给客户端。

  • 如果downstream不包含请求的软件包版本,则按其配置downstream的 CodeCatalyst 搜索顺序在上游存储库中搜索该版本。如果找到了程序包版本,则会将对该版本的引用复制到 downstream,并将程序包版本返回给客户端。

  • 如果上游存储库downstream或其上游存储库都不包含软件包版本,则会向客户端返回 HTTP 404 Not Found 响应。

一个存储库允许的直接上游存储库的最大数量为 10。请求软件包版本时 CodeCatalyst 搜索的最大存储库数为 25。

上游存储库的程序包保留

如果在上游存储库中找到了请求的软件包版本,则会保留对该版本的引用,并且在请求该版本的存储库中始终可用。这样可以确保在上游存储库意外中断时您可以访问您的软件包。保留的程序包版本不受以下任何因素的影响:

  • 删除上游存储库。

  • 断开上游存储库与下游存储库的连接。

  • 从上游存储库中删除程序包版本。

  • 在上游存储库中编辑程序包版本(例如,向其中添加新资产)。

通过上游关系获取软件包

CodeCatalyst 可以通过多个名为上游存储库的链接存储库获取软件包。如果一个 CodeCatalyst 包存储库与另一个包存储库有上游连接,而另一个 CodeCatalyst 包存储库与网关存储库有上游连接,则会从外部存储库中复制对不在上游存储库中的软件包的请求。例如,考虑以下配置:名为的存储库与网关存储库repo-A有上游连接npm-public-registry-gatewaynpm-public-registry-gateway与公共软件包存储库 https://npmjs.com 有上游连接。

简单的上游存储库示意图,其中显示了链接在一起的三个存储库。

如果配置npm为使用repo-A存储库,则运行npm install会启动将包从 https://npmjs.com 复制到npm-public-registry-gateway。已安装的版本也会提取到 repo-A。下面的示例会安装 lodash

$ npm config get registry https://packages.region.codecatalyst.aws/npm/space-name/proj-name/repo-name/ $ npm install lodash + lodash@4.17.20 added 1 package from 2 contributors in 6.933s

运行后npm install,仅repo-A包含最新版本 (lodash 4.17.20),因为这是npm从中repo-A获取的版本。

由于与 https://npmjs.com npm-public-registry-gateway 有外部上游连接,所以从 https://npmjs.com 导入的所有软件包版本都存储在中npm-public-registry-gateway。这些软件包版本可以由任何具有上游连接的下游存储库获取。npm-public-registry-gateway

的内容为您npm-public-registry-gateway提供了一种查看随着时间的推移从 https://npmjs.com 导入的所有软件包和软件包版本的方法。

中间存储库中的程序包保留

CodeCatalyst 允许您链接上游存储库。例如,repo-A可以repo-B作为上游存储库,repo-B也可以repo-C作为上游存储库。这个配置意味着在 repo-A 中可以获取 repo-Brepo-C 中的程序包版本。

简单的上游存储库示意图,其中显示了链接在一起的三个存储库。

当包管理器连接到存储库repo-A并从存储库中获取软件包版本时repo-C,软件包版本不会保留在存储库repo-B中。软件包版本仅保留在最远的下游存储库中,在本示例中为。repo-A它不会保留在任何中间存储库中。对于较长的链也是如此;例如,如果有四个存储库:repo-Arepo-Brepo-Crepo-D、和,并且连接的包管理器从中repo-A获取软件包版本,则包版本将保留在或中repo-Drepo-A但不保留在repo-Brepo-C中。

从公共包存储库中提取包版本时,软件包保留行为类似,唯一的不同是包版本始终保留在与公共仓库有直接上游连接的网关存储库中。例如,repo-A具有repo-B作为上游存储库。 repo-Bnpm-public-registry-gateway作为上游存储库,它与公共存储库 npmjs.com 有上游连接;参见下图。

上游存储库图显示了三个存储库链接在一起以及与 npmjs.com 的外部上游连接。

如果连接到的软件包管理器repo-A请求特定的软件包版本,例如 l odash 4.17.20,而该软件包版本不存在于三个存储库中的任何一个存储库中,则将从 npmjs.com 获取该版本。当获取 l odash 4.17.20 时,它会保留在中,repo-A因为这是最远的下游存储库,并且npm-public-registry-gateway它与公共外部存储库 npmjs.com 有上游连接。 l@@ odash 4.17.20 没有保留在中,repo-B因为那是一个中间存储库。