

A Amazon não CodeCatalyst está mais aberta a novos clientes. Os clientes atuais podem continuar usando o serviço normalmente. Para obter mais informações, consulte [Como migrar do CodeCatalyst](migration.md).

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

# Conceitos dos pacotes
<a name="packages-concepts"></a>

Aqui estão alguns conceitos e termos que você deve conhecer ao gerenciar, publicar ou consumir pacotes CodeCatalyst.

## Pacotes
<a name="packages-concepts-packages"></a>

Um *pacote* é um pacote que inclui o software e os metadados necessários para instalar o software e resolver quaisquer dependências. CodeCatalyst suporta o formato de pacote npm.

Um pacote consiste em:
+ Um nome (por exemplo, `webpack` é o nome de um pacote npm conhecido)
+ Um [namespace](#packages-concepts-package-namespaces) opcional (por exemplo, `@types` em `@types/node`)
+ Um conjunto de [versões](#packages-concepts-package-versions) (por exemplo, `1.0.0`, `1.0.1`, `1.0.2`)
+ Metadados em nível de pacote (por exemplo, tags npm dist)

## Namespaces de pacote
<a name="packages-concepts-package-namespaces"></a>

Alguns formatos de pacotes permitem a utilização de nomes de pacotes hierárquicos para organizar os pacotes em grupos lógicos e ajudar a evitar colisões de nomes. Pacotes com o mesmo nome podem ser armazenados em namespaces diferentes. Por exemplo, o npm suporta escopos, e o pacote npm `@types/node` tem um escopo `@types` e um nome `node`. Há vários outros nomes de pacotes no escopo `@types`. Em CodeCatalyst, o escopo (“tipos”) é chamado de namespace do pacote e o nome (“nó”) é chamado de nome do pacote. Para pacotes do Maven, o namespace do pacote corresponde ao groupID do Maven. O pacote `org.apache.logging.log4j:log4j` do Maven tem o groupID (namespace do pacote) `org.apache.logging.log4j` e o artifactID (nome do pacote) `log4j`. Alguns formatos de pacotes, como do Python, não permitem a utilização de nomes hierárquicos com um conceito semelhante ao escopo do npm ou ao groupID do Maven. Se não houver nenhuma maneira de agrupar nomes de pacotes, evitar colisões de nomes pode ser mais difícil.

## Versões do pacote
<a name="packages-concepts-package-versions"></a>

A *versão do pacote* identifica a versão específica de um pacote, como `@types/node@12.6.9`. O formato e a semântica do número da versão variam conforme os diferentes formatos de pacote. Por exemplo, as versões dos pacotes do npm devem estar em conformidade com a [especificação de Versionamento semântico](https://semver.org/). Em CodeCatalyst, uma versão do pacote consiste no identificador da versão, nos package-version-level metadados e em um conjunto de ativos.

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

Um *ativo* é um arquivo individual armazenado CodeCatalyst que está associado a uma versão do pacote, como um arquivo npm ou um `.tgz` arquivo Maven POM ou JAR.

## Repositórios de pacotes
<a name="packages-concepts-repository"></a>

Um *repositório de CodeCatalyst pacotes* contém um conjunto de [pacotes](#packages-concepts-packages), que contêm [versões de pacotes](#packages-concepts-package-versions), cada uma delas mapeada para um conjunto de [ativos](#packages-concepts-assets). Os repositórios de pacotes são poliglotas, o que significa que um único repositório pode conter pacotes de qualquer tipo compatível. Cada repositório de pacotes expõe endpoints para buscar e publicar pacotes usando ferramentas como NuGet CLIs (`nuget`,), a CLI`dotnet`, a `npm` CLI do Maven () e o Python (e`mvn`). CLIs `pip` `twine` Para obter informações sobre cotas de pacotes em CodeCatalyst, incluindo quantos repositórios de pacotes podem ser criados em cada espaço, consulte. [Cotas para pacotes](packages-quotas.md)

Você pode vincular um repositório de pacotes a outro definindo-o como upstream. Quando um repositório é definido como upstream, você pode usar qualquer pacote do upstream, bem como quaisquer repositórios upstream adicionais na cadeia. Para obter mais informações, consulte [Repositórios upstream](#packages-concepts-upstream-repositories).

Os repositórios de gateway são um tipo especial de repositório de pacotes que extrai e armazena pacotes de autoridades externas oficiais de pacotes. Para obter mais informações, consulte [Repositórios de gateway](#packages-concepts-gateway-repositories).

## Repositórios upstream
<a name="packages-concepts-upstream-repositories"></a>

Você pode usar CodeCatalyst para criar um relacionamento upstream entre dois repositórios de pacotes. Um repositório de pacotes é *upstream* quando as versões do pacote contidas nele podem ser acessadas a partir do endpoint do repositório de pacotes downstream. Com um relacionamento inicial, o conteúdo dos dois repositórios de pacotes é mesclado com eficácia do ponto de vista de um cliente.

Por exemplo, se um gerenciador de pacotes solicitar uma versão de pacote que não existe em um repositório, CodeCatalyst pesquisará a versão do pacote nos repositórios upstream configurados. Os repositórios upstream são pesquisados na ordem em que estão configurados e, quando um pacote é encontrado, CodeCatalyst a pesquisa é interrompida. 

## Repositórios de gateway
<a name="packages-concepts-gateway-repositories"></a>

Um *repositório de gateway* é um tipo especial de repositório de pacotes conectado a uma autoridade de pacotes oficial e externa compatível. Ao adicionar um repositório de gateway como [repositório upstream](#packages-concepts-upstream-repositories), você pode consumir pacotes da autoridade oficial de pacotes correspondente. Seu repositório downstream não se comunica com o repositório público; em vez disso, tudo é intermediado pelo repositório de gateway. Os pacotes consumidos dessa maneira são armazenados no repositório de gateway e no repositório downstream que recebeu a solicitação original.

Os repositórios de gateway são predefinidos, mas devem ser criados em cada projeto para serem usados. A lista a seguir contém todos os repositórios de gateway que podem ser criados CodeCatalyst e a autoridade do pacote à qual eles estão conectados.
+ **npm-public-registry-gateway**fornece pacotes npm de npmjs.com.
+ **maven-central-gateway**fornece pacotes Maven do repositório Maven Central.
+ **google-android-gateway**fornece pacotes Maven do Google Android.
+ **commonsware-gateway** fornece pacotes Maven de. CommonsWare
+ **gradle-plugins-gateway**fornece pacotes Maven dos plug-ins do Gradle.
+ **nuget-gallery-gateway**fornece NuGet pacotes da NuGet Galeria.
+ **pypi-gateway** fornece pacotes Python do Python Package Index.