本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
使用上游儲存庫請求套件版本
下列範例顯示套件管理員從 CodeCatalyst 具有上游儲存庫的套件儲存庫請求套件的可能案例。
在此範例中,套件管理員,例如 npm
,會從具有多個上游儲存庫downstream
的名為 的套件儲存庫請求套件版本。請求套件時,可能會發生以下情況:
-
如果
downstream
包含請求的套件版本,則會傳回用戶端。 -
如果
downstream
不包含請求的套件版本,請在downstream
的上游儲存庫中,依其設定的搜尋順序進行 CodeCatalyst 搜尋。如果找到套件版本,則會將其參考複製到downstream
,並將套件版本傳回用戶端。 -
如果
downstream
或其上游儲存庫都不包含套件版本,則會將 HTTP 404Not Found
回應傳回給用戶端。
一個儲存庫允許的直接上游儲存庫數量上限為 10。請求套件版本時, 中 CodeCatalyst 搜尋的儲存庫數目上限為 25。
從上游儲存庫保留套件
如果在上游儲存庫中找到請求的套件版本,則會保留其參考,並且一律可在請求的儲存庫中使用。這可確保在上游儲存庫發生非預期的中斷時,您可以存取套件。保留的套件版本不受下列任何一項影響:
-
刪除上游儲存庫。
-
中斷上游儲存庫與下游儲存庫的連線。
-
從上游儲存庫刪除套件版本。
-
在上游儲存庫中編輯套件版本 (例如,新增資產至儲存庫)。
透過上游關係擷取套件
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
中繼儲存庫中的套件保留
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-C
、 repo-B
和 repo-D
,以及連接至從 repo-A
擷取套件版本的套件管理員repo-D
,套件版本會保留在 repo-B
或 中repo-A
,但不會保留在 中repo-C
。
從公有套件儲存庫中提取套件版本時,套件保留行為類似,但套件版本一律保留在與公有儲存庫直接上游連線的閘道儲存庫中。例如, 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
因為這是中繼儲存庫。