

Amazon CodeCatalyst 不再向新客戶開放。現有客戶可以繼續正常使用該服務。如需詳細資訊，請參閱[如何從 CodeCatalyst 遷移](migration.md)。

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 套件概念
<a name="packages-concepts"></a>

以下是在 CodeCatalyst 中管理、發佈或取用套件時應注意的一些概念和術語。

## 套件
<a name="packages-concepts-packages"></a>

*套件*是一種套件，其中包含安裝軟體和解決任何相依性所需的軟體和中繼資料。CodeCatalyst 支援 npm 套件格式。

套件包含：
+ 名稱 （例如， `webpack` 是熱門 npm 套件的名稱）
+ 選用[的命名空間](#packages-concepts-package-namespaces) （例如，在 `@types`中`@types/node`)
+ 一組[版本](#packages-concepts-package-versions) （例如 、`1.0.0``1.0.1`、`1.0.2`)
+ 套件層級中繼資料 （例如 npm dist 標籤）

## 套件命名空間
<a name="packages-concepts-package-namespaces"></a>

有些套件格式支援階層式套件名稱，可將套件組織成邏輯群組，並協助避免名稱衝突。具有相同名稱的套件可以存放在不同的命名空間中。例如，npm 支援範圍，而 npm 套件的範圍`@types/node`為 `@types`，名稱為 `node`。`@types` 範圍內還有許多其他套件名稱。在 CodeCatalyst 中，範圍 (「類型」) 稱為套件命名空間，而名稱 (「節點」) 稱為套件名稱。對於 Maven 套件，套件命名空間對應至 Maven groupID。Maven 套件`org.apache.logging.log4j:log4j`的 groupID （套件命名空間） 為 `org.apache.logging.log4j`，而 artifactID （套件名稱） 為 `log4j`。Python 等某些套件格式不支援階層式名稱，其概念類似於 npm 範圍或 Maven groupID。如果您沒有將套件名稱分組的方法，可能更難避免名稱衝突。

## 套件版本
<a name="packages-concepts-package-versions"></a>

*套件版本*可識別套件的特定版本，例如 `@types/node@12.6.9`。版本編號格式和語意因不同的套件格式而異。例如，npm 套件版本必須符合[語意版本控制規格](https://semver.org/)。在 CodeCatalyst 中，套件版本包含版本識別符、package-version-level中繼資料和一組資產。

## 資產
<a name="packages-concepts-assets"></a>

*資產*是存放在 CodeCatalyst 中的個別檔案，與套件版本相關聯，例如 npm `.tgz` 檔案或 Maven POM 或 JAR 檔案。

## 套件儲存庫
<a name="packages-concepts-repository"></a>

CodeCatalyst *套件儲存庫*包含一組[套件](#packages-concepts-packages)，其中包含[套件版本](#packages-concepts-package-versions)，每個版本都會對應至一組[資產](#packages-concepts-assets)。套件儲存庫是多槽，這表示單一儲存庫可包含任何支援類型的套件。每個套件儲存庫都會公開端點，以使用 NuGet CLIs(`nuget`、`dotnet`)、`npm`CLI、Maven CLI (`mvn`) 和 Python CLIs(`pip` 和 ) 等工具來擷取和發佈套件`twine`。如需 CodeCatalyst 中套件配額的相關資訊，包括在每個空間中可以建立多少個套件儲存庫，請參閱 [套件的配額](packages-quotas.md)。

您可以將套件儲存庫設定為上游，以將其連結至另一個儲存庫。當儲存庫設定為上游時，您可以使用來自上游的任何套件，以及鏈結中的任何其他上游儲存庫。如需詳細資訊，請參閱[上游儲存庫](#packages-concepts-upstream-repositories)。

閘道儲存庫是一種特殊類型的套件儲存庫，可從官方外部套件授權單位提取和存放套件。如需詳細資訊，請參閱[閘道儲存庫](#packages-concepts-gateway-repositories)。

## 上游儲存庫
<a name="packages-concepts-upstream-repositories"></a>

您可以使用 CodeCatalyst 在兩個套件儲存庫之間建立上游關係。當套件儲存庫包含的套件版本可從下游儲存庫的套件儲存庫端點存取時，套件儲存庫是另一個 的*上游*。使用上游關係時，兩個套件儲存庫的內容會從用戶端的角度有效地合併。

例如，如果套件管理員請求的套件版本不存在於儲存庫中，則 CodeCatalyst 會搜尋套件版本的已設定上游儲存庫。上游儲存庫會依設定的順序進行搜尋，一旦找到套件，CodeCatalyst 就會停止搜尋。

## 閘道儲存庫
<a name="packages-concepts-gateway-repositories"></a>

*閘道儲存庫*是一種特殊類型的套件儲存庫，連接到支援的外部官方套件授權單位。當您將閘道儲存庫新增為[上游儲存庫](#packages-concepts-upstream-repositories)時，您可以從對應的官方套件授權機構取用套件。您的下游儲存庫不會與公有儲存庫通訊，而是所有內容都會由閘道儲存庫中繼。以這種方式取用的套件會存放在閘道儲存庫和接收原始請求的下游儲存庫中。

閘道儲存庫是預先定義的，但必須在要使用的每個專案中建立。下列清單包含可在 CodeCatalyst 中建立的每個閘道儲存庫，以及其連線的套件授權。
+ **npm-public-registry-gateway** 提供來自 npmjs.com：// 的 npm 套件。
+ **maven-central-gateway** 提供來自 Maven Central 儲存庫的 Maven 套件。
+ **google-android-gateway** 提供來自 Google Android 的 Maven 套件。
+ **commonsware-gateway** 提供來自 CommonsWare 的 Maven 套件。
+ **gradle-plugins-gateway** 提供來自 Gradle 外掛程式的 Maven 套件。
+ **nuget-gallery-gateway** 提供來自 NuGet Gallery 的 NuGet 套件。
+ **pypi-gateway** 從 Python 套件索引提供 Python 套件。