

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á.

# Tratamento de tags npm
<a name="npm-tags"></a>

 Os registros npm são compatíveis com *tags*, que são aliases de string para versões de pacotes. Você pode usar tags para proporcionar um alias em vez de números de versão. Por exemplo, você pode ter um projeto com vários fluxos de desenvolvimento e usar uma tag diferente (por exemplo, `stable`, `beta`, `dev`, `canary`) para cada fluxo. Para ver mais informações, consulte [dist-tag](https://docs.npmjs.com/cli/dist-tag) no site do npm. 

 Por padrão, o npm usa a tag `latest` para identificar a versão atual de um pacote. `npm install {{pkg}}` (sem especificador de `@{{version}}` ou `@{{tag}}`) instala a tag mais recente. Normalmente, os projetos usam a tag mais recente somente para versões de lançamento estáveis. Outras tags são usadas para versões instáveis ou de pré-lançamento. 

## Edite tags com o cliente npm
<a name="editing-tags-with-the-npm-client"></a>

 Os três comandos `npm dist-tag` (`add`, `rm` e `ls`) funcionam de forma idêntica nos repositórios do CodeArtifact, assim como no [registro npm padrão](https://registry.npmjs.com/).

## Tags npm e a API CopyPackageVersions
<a name="tags-and-cpv"></a>

Quando você usa a API `CopyPackageVersions` para copiar uma versão do pacote npm, todas as tags que dão alias a essa versão são copiadas para o repositório de destino. Quando uma versão que está sendo copiada tem uma tag que também está presente no destino, a operação de cópia define o valor da tag no repositório de destino para corresponder ao valor no repositório de origem.

Por exemplo, digamos que o repositório S e o repositório D contenham uma única versão do pacote `web-helper` com o conjunto de tags mais recente, conforme mostrado nesta tabela.


****  

| Repositório | Nome do pacote | Tags do pacote | 
| --- | --- | --- | 
| S | `web-helper` |  *latest* (alias para a versão 1.0.1) | 
| D | `web-helper` |  *latest* (alias para a versão 1.0.0) | 

 `CopyPackageVersions` é invocada para copiar o `web-helper` 1.0.1 de S para D. Depois que a operação for concluída, a tag `latest` no repositório `web-helper` no repositório D tem o alias 1.0.1, não 1.0.0.

Se você precisar alterar as tags após a cópia, use o comando `npm dist-tag` para modificar as tags diretamente no repositório de destino. Para obter mais informações sobre a API `CopyPackageVersions`, consulte [Copiar pacotes entre repositórios.](copy-package.md)

## Tags npm e repositórios upstream
<a name="tags-and-upstreams"></a>

Quando o npm solicita as tags de um pacote e as versões desse pacote também estão presentes em um repositório upstream, o CodeArtifact mescla as tags antes de devolvê-las ao cliente. Por exemplo, um repositório chamado R tem um repositório upstream chamado U. A tabela a seguir mostra as tags de um pacote chamado `web-helper` presente nos dois repositórios.


****  

| Repositório | Nome do pacote | Tags do pacote | 
| --- | --- | --- | 
| R | `web-helper` |  *latest* (alias para a versão 1.0.0) | 
| U | `web-helper` |  *alpha* (alias para a versão 1.0.1) | 

Nesse caso, quando o cliente npm busca as tags do pacote `web-helper` no repositório R, ele recebe as tags *latest* e *alpha*. As versões para as quais as tags apontam não mudarão.

Quando a mesma tag está presente no mesmo pacote no repositório upstream e downstream, o CodeArtifact usa a tag que está presente no repositório *upstream*. Por exemplo, suponha que as tags no *webhelper* tenham sido modificadas para se parecerem com as seguintes.


****  

| Repositório | Nome do pacote | Tags do pacote | 
| --- | --- | --- | 
| R | `web-helper` |  *latest* (alias para a versão 1.0.0) | 
| U | `web-helper` |  *latest* (alias para a versão 1.0.1) | 

Nesse caso, quando o cliente npm buscar as tags para o pacote *web-helper* do repositório R, a tag *latest* terá um alias para a versão *1.0.1*, pois é isso que está no repositório upstream. Isso facilita o consumo de novas versões de pacotes em um repositório upstream que ainda não estão presentes em um repositório downstream por meio da execução de `npm update`.

Usar a tag no repositório upstream pode ser problemático ao publicar novas versões de um pacote em um repositório downstream. Por exemplo, digamos que a tag latest no pacote *web-helper* seja a mesma em R e U.


****  

| Repositório | Nome do pacote | Tags do pacote | 
| --- | --- | --- | 
| R | `web-helper` |  *latest* (alias para a versão 1.0.1) | 
| U | `web-helper` |  *latest* (alias para a versão 1.0.1) | 

Quando a versão 1.0.2 é publicada no R, o npm atualiza a tag *latest* para 1.0.2.


****  

| Repositório | Nome do pacote | Tags do pacote | 
| --- | --- | --- | 
| R | `web-helper` |  *latest* (alias para a versão 1.0.2) | 
| U | `web-helper` |  *latest* (alias para a versão 1.0.1) | 

No entanto, o cliente npm nunca vê esse valor de tag porque o valor de *latest* em U é 1.0.1. A execução de `npm install` no repositório R imediatamente após a publicação da versão 1.0.2 instala a 1.0.1 em vez da versão que acabou de ser publicada. Para instalar a versão publicada mais recentemente, é necessário especificar a versão exata do pacote, da seguinte forma.

```
npm install web-helper@1.0.2
```