本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
請求具有上游存儲庫的軟件包版本
下列範例顯示套件管理員從具有上游儲存庫的套裝程式儲存區域要求 CodeCatalyst 套件時的可能案例。
在此範例中,套件管理員 (例如) 會從名downstream
為npm
具有多個上游儲存庫的套件儲存庫要求套件版本。當要求套件時,可能會發生下列情況:
-
如果
downstream
包含請求的軟件包版本,則將其返回給客戶端。 -
如果
downstream
不包含要求的套件版本,請依其設定downstream
的搜 CodeCatalyst 尋順序在上游儲存庫中搜尋該套件版本。如果找到套件版本,則會將其參照複製到downstream
,並將套件版本傳回給用戶端。 -
如果
downstream
或其上游存放庫都不包含套件版本,則會將 HTTP 404Not Found
回應傳回給用戶端。
一個儲存庫允許的直接上游儲存庫數目上限為 10。當要求套件版本時,儲存庫 CodeCatalyst 搜尋的數目上限為 25。
從上游儲存庫保留 Package
如果在上游存放庫中找到要求的套件版本,則會保留對該套件的參考,並且永遠可在要求該套件的存放庫中使用。如此可確保在上游儲存庫發生意外中斷時,您可以存取套件。保留的套件版本不受下列任何一項影響:
-
刪除上游存放庫。
-
中斷上游存放庫與下游存放庫的連線。
-
從上游存放庫刪除套件版本。
-
編輯上游存放庫中的套件版本 (例如,向其新增資產)。
透過上游關係擷取套件
CodeCatalyst 可以通過稱為上游存儲庫的多個鏈接存儲庫獲取包。如果套 CodeCatalyst 裝程式儲存庫具有與閘道儲存庫之上游連線的另一個 CodeCatalyst 套裝程式儲存庫的上游連線,則會從外部存放庫複製不在上游儲存庫中的套裝軟體的要求。例如,請考慮下列組態:名為的存放庫repo-A
具有與閘道存放庫的上游連線npm-public-registry-gateway
。 npm-public-registry-gateway
與公共軟件包存儲庫有一個上游連接,https://npmjs.com
如果配置npm
為使用repo-A
存放庫,則執行中npm install
會啟動從中複製套裝軟https://npmjs.comnpm-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
獲取的版本。
由於npm-public-registry-gateway
具有與的外部上游連線 https://npmjs.comnpm-public-registry-gateway
。這些套件版本可能是由任何具有上游連線的下游存放庫擷取而導致npm-public-registry-gateway
的。
的npm-public-registry-gateway
內容可讓您查看從https://npmjs.com
中繼儲存庫中的 Package 保留
CodeCatalyst 允許您鏈接上游存儲庫。例如,repo-A
可以具有repo-B
上游存儲庫,並且repo-B
可以repo-C
作為上游存儲庫。此配置使軟件包版本在中repo-B
並從中repo-C
提供repo-A
。
當套裝程式管理員連線至儲存庫repo-A
並從儲存庫擷取套件版本時repo-C
,套件版本不會保留在儲存庫repo-B
中。封裝版本只會保留在最遠的下游存放庫中,在此範例中為。repo-A
它不會保留在任何中間存儲庫中。對於較長的鏈結也是如此;例如,如果有四個存儲庫:repo-A
、、和 repo-B
repo-C
repo-D
,以及連接到從中repo-A
獲取軟件包版本的軟件包管理器repo-D
,則該軟件包版本將保留在或中,repo-A
但不會保留在repo-B
或repo-C
中。
從公用 Package 存放庫提取套件版本時,套件保留行為與公用套件存放庫有直接上游連線的閘道儲存庫中會一直保留套件版本。例如,repo-A
具有repo-B
作為上游存儲庫。 repo-B
npm-public-registry-gateway
作為一個上游存儲庫,它與公共存儲庫 npmjs.com 具有上游連接; 請參閱下圖。
如果連接到的軟件包管理器repo-A
請求特定的軟件包版本(例如 lodash 4.17.20),並且該軟件包版本不存在於三個存儲庫中的任何一個,則將從 npmjs.com 提取該軟件包版本。當 lodash 4.17.20 被提取時,它會保留在中,repo-A
因為它是最遠的下游存儲庫,並且它具有與npm-public-registry-gateway
公共外部存儲庫 npmjs.com 的上游連接。 lodash 4.17.20 不會保留在中,repo-B
因為這是一個中繼儲存庫。