

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

# Usando o CodeArtifact com npm
<a name="using-npm"></a>

Esses tópicos descrevem como usar npm, o gerenciador de pacotes Node.js, com o CodeArtifact.

**nota**  
O CodeArtifact é compatível com o `node v4.9.1` e posterior e com o `npm v5.0.0` e posterior.

**Topics**
+ [Configurar e usar o npm](npm-auth.md)
+ [Configurar e usar o Yarn](npm-yarn.md)
+ [Suporte para comandos npm](npm-commands.md)
+ [Tratamento de tags npm](npm-tags.md)
+ [Suporte para gerenciadores de pacotes compatíveis com o npm](npm-other-clients.md)

# Configure e use o npm com CodeArtifact
<a name="npm-auth"></a>

Depois de criar um repositório no CodeArtifact, você pode usar o cliente npm para instalar e publicar pacotes. O método recomendado para configurar o npm com o endpoint e o token de autorização do repositório é usando o comando `aws codeartifact login`. Também é possível configurar o npm manualmente.

**Contents**
+ [Configuração do npm com o comando login](#configure-npm-login-command)
+ [Configuração do npm sem usar o comando login](#configuring-npm-without-using-the-login-command)
+ [Execução de comandos npm](#running-npm-commands)
+ [Verificar autorização e autenticação de npm](#verifying-npm-authentication-and-authorization)
+ [Mudança de volta para o registro npm padrão](#revert-default-npm-registry)
+ [Solução de problemas de instalações lentas com npm 8.x ou posterior](#troubleshooting-slow-npm-install)

## Configuração do npm com o comando login
<a name="configure-npm-login-command"></a>

Use o comando `aws codeartifact login` para buscar credenciais para uso com o npm.

**nota**  
Se você estiver acessando um repositório em um domínio de sua propriedade, não será necessário incluir `--domain-owner`. Para obter mais informações, consulte [Domínios entre contas](domain-overview.md#domain-overview-cross-account).

**Importante**  
Se você estiver usando o npm 10.x ou mais recente, deverá usar a AWS CLI versão 2.9.5 ou mais recente para executar o comando com êxito. `aws codeartifact login`

```
aws codeartifact login --tool npm --domain my_domain --domain-owner 111122223333 --repository my_repo
```

Esse comando faz as seguintes alterações em seu arquivo \$1/.npmrc:
+ Adiciona um token de autorização depois de buscá-lo CodeArtifact usando suas AWS credenciais.
+ Define o registro npm para o repositório especificado pela opção `--repository`.
+ **Para npm 6 e inferior:** adiciona `"always-auth=true"` para que o token de autorização seja enviado para cada comando npm.

O período de autorização padrão após chamar o `login` é de 12 horas e o `login` deve ser chamado para atualizar o token periodicamente. Para obter mais informações sobre o token de autorização criado com o comando `login`, consulte [Tokens criados com o comando `login`](tokens-authentication.md#auth-token-login).

## Configuração do npm sem usar o comando login
<a name="configuring-npm-without-using-the-login-command"></a>

Você pode configurar o npm com seu CodeArtifact repositório sem o `aws codeartifact login` comando atualizando manualmente a configuração do npm.

**Para configurar o npm sem usar o comando login**

1. Em uma linha de comando, busque um token de CodeArtifact autorização e armazene-o em uma variável de ambiente. O npm usará esse token para se autenticar no seu repositório. CodeArtifact 
**nota**  
O comando a seguir é para máquinas macOS ou Linux. Para ver informações sobre como configurar variáveis de ambiente em uma máquina Windows, consulte [Passar um token de autenticação usando uma variável de ambiente](tokens-authentication.md#env-var).

   ```
   CODEARTIFACT_AUTH_TOKEN=`aws codeartifact get-authorization-token --domain my_domain --domain-owner 111122223333 --query authorizationToken --output text`
   ```

1. Obtenha o endpoint do seu CodeArtifact repositório executando o comando a seguir. O endpoint do repositório é usado para direcionar o npm ao seu repositório para instalar ou publicar pacotes.
   + *my\$1domain*Substitua pelo seu nome de CodeArtifact domínio.
   + *111122223333*Substitua pelo ID da AWS conta do proprietário do domínio. Se você estiver acessando um repositório em um domínio de sua propriedade, não será necessário incluir `--domain-owner`. Para obter mais informações, consulte [Domínios entre contas](domain-overview.md#domain-overview-cross-account).
   + *my\$1repo*Substitua pelo nome CodeArtifact do seu repositório.

   ```
   aws codeartifact get-repository-endpoint --domain my_domain --domain-owner 111122223333 --repository my_repo --format npm
   ```

   O URL a seguir é um exemplo de endpoint de repositório.

   ```
   https://my_domain-111122223333.d.codeartifact.us-west-2.amazonaws.com/npm/my_repo/
   ```
**Importante**  
O URL de registro deve terminar com uma barra inclinada (/). Do contrário, você não poderá se conectar ao repositório.

1. Use o `npm config set` comando para definir o registro no seu CodeArtifact repositório. Substitua o URL pelo URL do endpoint do repositório da etapa anterior.

   ```
   npm config set registry=https://my_domain-111122223333.d.codeartifact.region.amazonaws.com/npm/my_repo/
   ```
**nota**  
Para usar um endpoint de pilha dupla, use o endpoint `codeartifact.region.on.aws`.

1. Use o comando `npm config set` para adicionar seu token de autorização à configuração do npm.

   ```
   npm config set //my_domain-111122223333.d.codeartifact.region.amazonaws.com/npm/my_repo/:_authToken=$CODEARTIFACT_AUTH_TOKEN
   ```

   **Para npm 6 ou inferior:** para fazer com que o npm sempre passe o token de autenticação para CodeArtifact, mesmo para `GET` solicitações, definir a variável de `always-auth` configuração com. `npm config set` 

   ```
   npm config set //my_domain-111122223333.d.codeartifact.region.amazonaws.com/npm/my_repo/:always-auth=true
   ```

**Exemplo de arquivo de configuração do npm (`.npmrc`)**

 Veja a seguir um exemplo de `.npmrc` arquivo após seguir as instruções anteriores para definir o endpoint CodeArtifact do registro, adicionar um token de autenticação e configurar. `always-auth` 

```
registry=https://my_domain-111122223333.d.codeartifact.us-west-2.amazonaws.com/npm/my-cli-repo/
//my_domain-111122223333.d.codeartifact.us-west-2.amazonaws.com/npm/my_repo/:_authToken=eyJ2ZX...
//my_domain-111122223333.d.codeartifact.us-west-2.amazonaws.com/npm/my_repo/:always-auth=true
```

## Execução de comandos npm
<a name="running-npm-commands"></a>

Depois de configurar o cliente npm, você pode executar comandos npm. Supondo que um pacote esteja presente em seu repositório ou em um de seus repositórios upstream, você pode instalá-lo com `npm install`. Por exemplo, use o seguinte para instalar o pacote `lodash`.

```
npm install lodash
```

Use o comando a seguir para publicar um novo pacote npm em um CodeArtifact repositório.

```
npm publish
```

Para ver informações sobre como criar pacotes npm, consulte [Criação de módulos Node.js](https://docs.npmjs.com/getting-started/creating-node-modules) no site de documentação do npm. Para obter uma lista dos comandos npm compatíveis com CodeArtifact, consulte [npm Command Support](npm-commands.md). 

## Verificar autorização e autenticação de npm
<a name="verifying-npm-authentication-and-authorization"></a>

Invocar o comando `npm ping` é uma forma de verificar o seguinte:
+ Você configurou corretamente suas credenciais para poder se autenticar em um CodeArtifact repositório.
+ A configuração de autorização concede a você a permissão `ReadFromRepository`.

O resultado de uma invocação bem-sucedida de `npm ping` se parece com o seguinte.

```
$ npm -d ping
npm info it worked if it ends with ok
npm info using npm@6.4.1
npm info using node@v9.5.0
npm info attempt registry request try #1 at 4:30:59 PM
npm http request GET https://<domain>.d.codeartifact.us-west-2.amazonaws.com/npm/shared/-/ping?write=true
npm http 200 https:///npm/shared/-/ping?write=true
Ping success: {}
npm timing npm Completed in 716ms
npm info ok
```

A opção `-d` faz com que o npm imprima informações adicionais de depuração, incluindo o URL do repositório. Essas informações facilitam a confirmação de que o npm está configurado para usar o repositório esperado.

## Mudança de volta para o registro npm padrão
<a name="revert-default-npm-registry"></a>

Configurar o npm com CodeArtifact define o registro npm para o repositório especificado. CodeArtifact Você pode executar o comando a seguir para definir o registro npm de volta ao registro padrão quando terminar de se conectar a. CodeArtifact

```
npm config set registry https://registry.npmjs.com/
```

## Solução de problemas de instalações lentas com npm 8.x ou posterior
<a name="troubleshooting-slow-npm-install"></a>

Há um problema conhecido nas versões 8.x e posteriores do npm em que, se uma solicitação for feita para um repositório de pacotes e o repositório redirecionar o cliente para o Amazon S3 em vez de transmitir os ativos diretamente, o cliente npm poderá travar por vários minutos por dependência. 

Como CodeArtifact os repositórios são projetados para sempre redirecionar a solicitação para o Amazon S3, às vezes esse problema ocorre, o que causa longos tempos de compilação devido aos longos tempos de instalação do npm. Casos desse comportamento serão apresentados como uma barra de progresso exibida por vários minutos.

Para evitar esse problema, use os sinalizadores `--no-progress` ou `progress=false` com os comandos `npm` da CLI, conforme mostrado no exemplo a seguir.

```
npm install lodash --no-progress
```

# Configurar e usar o Yarn com o CodeArtifact
<a name="npm-yarn"></a>

Depois de criar um repositório, você pode usar o cliente Yarn para gerenciar pacotes npm.

**nota**  
O `Yarn 1.X` lê e usa informações do seu arquivo de configuração npm (.npmrc), o que não acontece com o `Yarn 2.X`. A configuração do `Yarn 2.X` deve ser definida no arquivo .yarnrc.yml.

**Contents**
+ [Configure o Yarn 1.X com o comando `aws codeartifact login`](#npm-yarn-configure-login)
+ [Configure o Yarn 2.X com o comando `yarn config set`](#npm-yarn-configure-yarn-command)

## Configure o Yarn 1.X com o comando `aws codeartifact login`
<a name="npm-yarn-configure-login"></a>

Para o `Yarn 1.X`, você pode configurar o Yarn com o CodeArtifact usando o comando `aws codeartifact login`. O comando `login` configurará o arquivo \$1/.npmrc com as informações e credenciais do endpoint do repositório do CodeArtifact. Com o `Yarn 1.X`, os comandos `yarn` usam as informações de configuração do arquivo \$1/.npmrc.

**Para configurar o `Yarn 1.X` com o comando login**

1. Caso ainda não tenha feito isso, configure suas credenciais AWS para uso com o AWS CLI, conforme descrito em [Conceitos básicos do CodeArtifact](getting-started.md).

1. Para executar o comando `aws codeartifact login`, o npm deve estar instalado. Consulte [Baixar e instalar o Node.js e o npm](https://docs.npmjs.com/downloading-and-installing-node-js-and-npm/) na *documentação do npm* para obter instruções de instalação.

1. Use o comando `aws codeartifact login` para buscar as credenciais do CodeArtifact e configurar o arquivo \$1/.npmrc.
   + Substitua *my\$1domain* pelo seu nome de domínio do CodeArtifact.
   + Substitua *111122223333* pelo ID da conta da AWS do proprietário do domínio. Se você estiver acessando um repositório em um domínio de sua propriedade, não será necessário incluir `--domain-owner`. Para obter mais informações, consulte [Domínios entre contas](domain-overview.md#domain-overview-cross-account).
   + Substitua *my\$1repo* pelo nome do seu repositório do CodeArtifact.

   ```
   aws codeartifact login --tool npm --domain my_domain --domain-owner 111122223333 --repository my_repo
   ```

   O comando `login` faz as seguintes alterações no arquivo \$1/.npmrc:
   + Adiciona um token de autorização depois de buscá-lo no CodeArtifact usando suas credenciais da AWS.
   + Define o registro npm para o repositório especificado pela opção `--repository`.
   + **Para npm 6 e inferior:** adiciona `"always-auth=true"` para que o token de autorização seja enviado para cada comando npm.

   O período de autorização padrão após a chamada do `login` é de 12 horas e `login` deve ser chamado para atualizar periodicamente o token. Para obter mais informações sobre o token de autorização criado com o comando `login`, consulte [Tokens criados com o comando `login`](tokens-authentication.md#auth-token-login).

1. **Para o npm 7.X e 8.X**, você deve adicionar `always-auth=true` ao arquivo \$1/.npmrc para usar o Yarn.

   1. Abra o arquivo \$1/.npmrc em um editor de texto e adicione `always-auth=true` em uma nova linha.

Você pode usar o comando `yarn config list` para verificar se o Yarn está usando a configuração correta. Depois de executar o comando, verifique os valores na seção `info npm config`. O conteúdo deve ser semelhante ao trecho a seguir.

```
info npm config
{
  registry: 'https://my_domain-111122223333.d.codeartifact.us-west-2.amazonaws.com/npm/my_repo/',
  '//my_domain-111122223333.d.codeartifact.us-west-2.amazonaws.com/npm/my_repo/:_authToken': 'eyJ2ZXI...',
  'always-auth': true
}
```

## Configure o Yarn 2.X com o comando `yarn config set`
<a name="npm-yarn-configure-yarn-command"></a>

O procedimento a seguir detalha como configurar o `Yarn 2.X` atualizando a configuração do `.yarnrc.yml` na linha de comando com o comando `yarn config set`.

**Para atualizar a configuração do `yarnrc.yml` a partir da linha de comando**

1. Caso ainda não tenha feito isso, configure suas credenciais AWS para uso com o AWS CLI, conforme descrito em [Conceitos básicos do CodeArtifact](getting-started.md).

1. Execute o comando `aws codeartifact get-repository-endpoint` para obter o endpoint do seu repositório do CodeArtifact.
   + Substitua *my\$1domain* pelo seu nome de domínio do CodeArtifact.
   + Substitua *111122223333* pelo ID da conta da AWS do proprietário do domínio. Se você estiver acessando um repositório em um domínio de sua propriedade, não será necessário incluir `--domain-owner`. Para obter mais informações, consulte [Domínios entre contas](domain-overview.md#domain-overview-cross-account).
   + Substitua *my\$1repo* pelo nome do seu repositório do CodeArtifact.

   ```
   aws codeartifact get-repository-endpoint --domain my_domain --domain-owner 111122223333 --repository my_repo --format npm
   ```

1. Atualize o valor `npmRegistryServer` no arquivo .yarnrc.yml com o endpoint do repositório.

   ```
   yarn config set npmRegistryServer "https://my_domain-111122223333.d.codeartifact.region.amazonaws.com/npm/my_repo/"
   ```

1. Obtenha um token de autorização do CodeArtifact e armazene-o em uma variável de ambiente.
**nota**  
O comando a seguir é para máquinas macOS ou Linux. Para ver informações sobre como configurar variáveis de ambiente em uma máquina Windows, consulte [Passar um token de autenticação usando uma variável de ambiente](tokens-authentication.md#env-var).
   + Substitua *my\$1domain* pelo seu nome de domínio do CodeArtifact.
   + Substitua *111122223333* pelo ID da conta da AWS do proprietário do domínio. Se você estiver acessando um repositório em um domínio de sua propriedade, não será necessário incluir `--domain-owner`. Para obter mais informações, consulte [Domínios entre contas](domain-overview.md#domain-overview-cross-account).
   + Substitua *my\$1repo* pelo nome do seu repositório do CodeArtifact.

   ```
   export CODEARTIFACT_AUTH_TOKEN=`aws codeartifact get-authorization-token --domain my_domain --domain-owner 111122223333 --query authorizationToken --output text`
   ```

1. Use o comando `yarn config set` para adicionar seu token de autenticação do CodeArtifact ao arquivo .yarnrc.yml. Substitua o URL no comando a seguir pelo URL do endpoint do repositório da Etapa 2.

   ```
   yarn config set 'npmRegistries["https://my_domain-111122223333.d.codeartifact.region.amazonaws.com/npm/my_repo/"].npmAuthToken' "${CODEARTIFACT_AUTH_TOKEN}"
   ```

1. Use o comando `yarn config set` para definir o valor de `npmAlwaysAuth` como `true`. Substitua o URL no comando a seguir pelo URL do endpoint do repositório da Etapa 2.

   ```
   yarn config set 'npmRegistries["https://my_domain-111122223333.d.codeartifact.region.amazonaws.com/npm/my_repo/"].npmAlwaysAuth' "true"
   ```

Depois da configuração, o arquivo .yarnrc.yml deve ter um conteúdo semelhante ao seguinte trecho.

```
npmRegistries:
  "https://my_domain-111122223333.d.codeartifact.us-west-2.amazonaws.com/npm/my_repo/":
    npmAlwaysAuth: true
    npmAuthToken: eyJ2ZXI...

npmRegistryServer: "https://my_domain-111122223333.d.codeartifact.us-west-2.amazonaws.com/npm/my_repo/"
```

Você também pode usar o comando `yarn config` para verificar os valores de `npmRegistries` e `npmRegistryServer`.

# Suporte para comandos npm
<a name="npm-commands"></a>

As seções a seguir resumem os comandos npm que são suportados pelos CodeArtifact repositórios, além dos comandos específicos que não são suportados.

**Contents**
+ [Comandos compatíveis que interagem com um repositório](#supported-commands-that-interact-with-a-repository)
+ [Comandos do lado do cliente compatíveis](#supported-client-side-commands)
+ [Comandos incompatíveis](#unsupported-commands)

## Comandos compatíveis que interagem com um repositório
<a name="supported-commands-that-interact-with-a-repository"></a>

Esta seção lista os comandos npm em que o cliente npm faz uma ou mais solicitações ao registro com o qual foi configurado (por exemplo, com `npm config set registry`). Foi verificado que esses comandos funcionam corretamente quando invocados em um CodeArtifact repositório.


****  

| Command | Description | 
| --- | --- | 
|   [bugs](https://docs.npmjs.com/cli/bugs)   |  Tenta adivinhar a localização do URL do rastreador de bugs de um pacote e, em seguida, tenta abri-lo.  | 
|   [ci](https://docs.npmjs.com/cli/ci)   |  Instala um projeto do zero.  | 
|   [deprecate](https://docs.npmjs.com/cli/deprecate)   |  Deprecia uma versão de um pacote.  | 
|   [dist-tag](https://docs.npmjs.com/cli/dist-tag)   |  Modifica as tags de distribuição do pacote.  | 
|   [docs](https://docs.npmjs.com/cli/docs)   |  Tenta adivinhar a localização do URL de documentação de um pacote e, em seguida, tenta abri-lo usando o parâmetro de configuração `--browser`.  | 
|   [doctor](https://docs.npmjs.com/cli/doctor)   |  Executa um conjunto de verificações para garantir que sua instalação do npm tenha o que precisa para gerenciar seus JavaScript pacotes.  | 
|   [install](https://docs.npmjs.com/cli/install)   |  Instala um pacote.  | 
|   [install-ci-test](https://docs.npmjs.com/cli/install-ci-test)   |  Instala um projeto do zero e executa testes. Alias: `npm cit`. Esse comando executa um `npm ci`, seguido imediatamente por um `npm test`.  | 
|   [install-test](https://docs.npmjs.com/cli/install-test)   |  Instala o pacote e executa testes. Executa um `npm install`, seguido imediatamente por um `npm test`.  | 
|   [outdated](https://docs.npmjs.com/cli/outdated)   |  Verifica o registro configurado para ver se algum pacote instalado está desatualizado no momento.  | 
|   [ping](https://docs.npmjs.com/cli/ping)   |  Faz ping no registro npm configurado ou fornecido e verifica a autenticação.  | 
|   [publish](https://docs.npmjs.com/cli/publish)   |  Publica uma versão do pacote no registro.  | 
|   [update](https://docs.npmjs.com/cli/update)   |  Adivinha a localização do URL do repositório de um pacote e, em seguida, tenta abri-lo usando o parâmetro de configuração `--browser`.  | 
|   [view](https://docs.npmjs.com/cli/view)   |  Exibe os metadados do pacote. Pode ser usado para imprimir propriedades de metadados.  | 

## Comandos do lado do cliente compatíveis
<a name="supported-client-side-commands"></a>

Esses comandos não exigem nenhuma interação direta com um repositório, portanto, CodeArtifact não é necessário fazer nada para suportá-los.


****  

| Command | Description | 
| --- | --- | 
|   [build](https://docs.npmjs.com/cli/v6/commands/npm-build)   |  Cria um pacote.  | 
|   [cache](https://docs.npmjs.com/cli/cache)   |  Manipula o cache de pacotes.  | 
|   [completion](https://docs.npmjs.com/cli/completion)   |  Ativa o preenchimento de guias em todos os comandos npm.  | 
|   [config](https://docs.npmjs.com/cli/config)   |  Atualiza o conteúdo do usuário e dos arquivos `npmrc` globais.  | 
|   [dedupe](https://docs.npmjs.com/cli/dedupe)   |  Pesquisa a árvore de pacotes local e tenta simplificar a estrutura movendo as dependências mais para cima na árvore, onde elas podem ser compartilhadas com mais eficiência por vários pacotes dependentes.  | 
|   [edit](https://docs.npmjs.com/cli/edit)   |  Edita um pacote instalado. Seleciona uma dependência no diretório de trabalho atual e abre a pasta do pacote no editor padrão.  | 
|   [explore](https://docs.npmjs.com/cli/explore)   |  Navega por um pacote instalado. Gera um subshell no diretório do pacote instalado especificado. Se um comando for especificado, ele será executado no subshell, que será encerrado imediatamente.  | 
|   [help](https://docs.npmjs.com/cli/help)   |  Recebe ajuda no npm.  | 
|   [help-search](https://docs.npmjs.com/cli/help-search)   |  Pesquisa a documentação de ajuda do npm.  | 
|   [init](https://docs.npmjs.com/cli/init)   |  Cria um arquivo `package.json`.  | 
|   [link](https://docs.npmjs.com/cli/link)   |  Cria Symlinks de uma pasta de pacotes.  | 
|   [ls](https://docs.npmjs.com/cli/ls)   |  Lista pacotes instalados.  | 
|   [pack](https://docs.npmjs.com/cli/pack)   |  Cria um tarball a partir de um pacote.  | 
|   [prefix](https://docs.npmjs.com/cli/prefix)   |  Exibe o prefixo. Esse é o diretório pai mais próximo que contém um arquivo `package.json`, a menos que `-g` também seja especificado.  | 
|   [prune](https://docs.npmjs.com/cli/prune)   |  Remove pacotes que não estão listados na lista de dependências do pacote pai.  | 
|   [rebuild](https://docs.npmjs.com/cli/rebuild)   |  Executa o comando `npm build` nas pastas correspondentes.  | 
|   [restart](https://docs.npmjs.com/cli/restart)   |  Executa os scripts de parada, reinicialização e inicialização de um pacote e os scripts anteriores e posteriores associados.  | 
|   [raiz](https://docs.npmjs.com/cli/root)   |  Imprime a pasta `node_modules` efetiva na saída padrão.  | 
|   [run-script](https://docs.npmjs.com/cli/run-script)   |  Executa scripts de pacotes arbitrários.  | 
|   [shrinkwrap](https://docs.npmjs.com/cli/shrinkwrap)   |  Bloqueia as versões de dependência para publicação.  | 
|   [uninstall](https://docs.npmjs.com/cli/uninstall)   |  Desinstala um pacote.  | 

## Comandos incompatíveis
<a name="unsupported-commands"></a>

Esses comandos npm não são compatíveis com CodeArtifact repositórios.


****  

| Command | Description | Observações | 
| --- | --- | --- | 
|   [access](https://docs.npmjs.com/cli/access)   |  Define o nível de acesso nos pacotes publicados.  |  CodeArtifact usa um modelo de permissão diferente do repositório público npmjs.  | 
|   [adduser](https://docs.npmjs.com/cli/adduser)   |  Adiciona uma conta de usuário de registro  |  CodeArtifact usa um modelo de usuário diferente do repositório público npmjs.  | 
|   [audit](https://docs.npmjs.com/cli/audit)   |  Executa uma auditoria de segurança.  |  CodeArtifact atualmente não vende dados de vulnerabilidade de segurança.  | 
|   [hook](https://docs.npmjs.com/cli/hook)   |  Gerencia hooks do npm, incluindo adição, remoção, listagem e atualização.  |  CodeArtifact atualmente não oferece suporte a nenhum tipo de mecanismo de notificação de alterações.  | 
|   [login](https://docs.npmjs.com/cli-commands/adduser.html)   |  Autentica um usuário. Este é um alias para `npm adduser`.   |  CodeArtifact usa um modelo de autenticação diferente do repositório público npmjs. Para obter mais informações, consulte [Autenticação com npm](npm-auth.md).  | 
|   [logout](https://docs.npmjs.com/cli/logout)   |  Sai do registro.  |  CodeArtifact usa um modelo de autenticação diferente do repositório público npmjs. Não há como sair de um CodeArtifact repositório, mas os tokens de autenticação expiram após o tempo de expiração configurável. A duração padrão do token é de 12 horas.   | 
|   [owner](https://docs.npmjs.com/cli/owner)   |  Gerencia proprietários de pacotes.  |  CodeArtifact usa um modelo de permissões diferente do repositório público npmjs.  | 
|   [profile](https://docs.npmjs.com/cli/profile)   |  Altera as configurações no seu perfil de registro.  |  CodeArtifact usa um modelo de usuário diferente do repositório público npmjs.  | 
|   [pesquisa](https://docs.npmjs.com/cli/search)   |  Pesquisa no registro por pacotes que correspondam aos termos de pesquisa.  |  CodeArtifact suporta a funcionalidade de pesquisa limitada com o comando [list-packages](list-packages.md).  | 
|   [star](https://docs.npmjs.com/cli/star)   |  Marca seus pacotes favoritos.  |  CodeArtifact atualmente não suporta nenhum tipo de mecanismo de favoritos.  | 
|   [stars](https://docs.npmjs.com/cli/stars)   |  Exibe pacotes marcados como favoritos.  |  CodeArtifact atualmente não suporta nenhum tipo de mecanismo de favoritos.  | 
|   [team](https://docs.npmjs.com/cli/team)   |  Gerencia equipes organizacionais e associações de equipes.  |  CodeArtifact usa um modelo de associação de usuário e grupo diferente do repositório público npmjs. Para obter mais informações, consulte [Identidades (usuários, grupos e perfis)](https://docs.aws.amazon.com/IAM/latest/UserGuide/id.html) no *Guia do usuário do IAM*.  | 
|   [token](https://docs.npmjs.com/cli/token)   |  Gerencia seus tokens de autenticação.  |  CodeArtifact usa um modelo diferente para obter tokens de autenticação. Para obter mais informações, consulte [Autenticação com npm](npm-auth.md).  | 
|   [unpublish](https://docs.npmjs.com/cli/unpublish)   |  Remove um pacote do registro.  |  CodeArtifact não suporta a remoção de uma versão de pacote de um repositório usando o cliente npm. Você pode usar o comando [delete-package-version](delete-package.md).  | 
|   [whoami](https://docs.npmjs.com/cli/whoami)   |  Exibe o nome do usuário npm.  |  CodeArtifact usa um modelo de usuário diferente do repositório público npmjs.  | 

# 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
```

# Suporte para gerenciadores de pacotes compatíveis com o npm
<a name="npm-other-clients"></a>

Esses outros gerenciadores de pacotes são compatíveis com o CodeArtifact e funcionam com o formato de pacote npm e o protocolo npm wire: 
+  [gerenciador de pacotes pnpm](https://pnpm.js.org). A versão mais recente confirmada como compatível com o CodeArtifact é a 3.3.4, que foi lançada em 18 de maio de 2019. 
+  [Gerenciador de pacotes Yam](https://yarnpkg.com/). A versão mais recente confirmada como compatível com o CodeArtifact é a 1.21.1, que foi lançada em 11 de dezembro de 2019. 

**nota**  
Recomendamos usar o Yarn 2.x com o CodeArtifact. O Yarn 1.x não tem repetições de HTTP, o que significa que é mais suscetível a falhas de serviço intermitentes que resultam em códigos de status ou erros de nível 500. Não há como configurar uma estratégia de repetição diferente para o Yarn 1.x, mas isso foi adicionado no Yarn 2.x. Você pode usar o Yarn 1.x, mas talvez seja necessário adicionar repetições de nível superior nos scripts de compilação. Por exemplo, executar o comando yarn em um loop para que ele repita um dowload não concluído de pacote.