

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

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