

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

# Configurer et utiliser npm avec CodeArtifact
<a name="npm-auth"></a>

Après avoir créé un référentiel dans CodeArtifact, vous pouvez utiliser le client npm pour installer et publier des packages. La méthode recommandée pour configurer npm avec le point de terminaison et le jeton d'autorisation de votre référentiel consiste à utiliser la `aws codeartifact login` commande. Vous pouvez également configurer npm manuellement.

**Contents**
+ [Configuration de npm avec la commande login](#configure-npm-login-command)
+ [Configuration de npm sans utiliser la commande de connexion](#configuring-npm-without-using-the-login-command)
+ [Exécution de commandes npm](#running-npm-commands)
+ [Vérification de l'authentification et de l'autorisation npm](#verifying-npm-authentication-and-authorization)
+ [Revenir au registre npm par défaut](#revert-default-npm-registry)
+ [Résolution des problèmes d'installation lents avec npm 8.x ou supérieur](#troubleshooting-slow-npm-install)

## Configuration de npm avec la commande login
<a name="configure-npm-login-command"></a>

Utilisez la `aws codeartifact login` commande pour récupérer les informations d'identification à utiliser avec npm.

**Note**  
Si vous accédez à un référentiel dans un domaine qui vous appartient, vous n'avez pas besoin de l'inclure`--domain-owner`. Pour de plus amples informations, veuillez consulter [Domaines multi-comptes](domain-overview.md#domain-overview-cross-account).

**Important**  
Si vous utilisez npm 10.x ou version ultérieure, vous devez utiliser la AWS CLI version 2.9.5 ou plus récente pour exécuter correctement la commande. `aws codeartifact login`

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

Cette commande apporte les modifications suivantes à votre fichier \$1/.npmrc :
+ Ajoute un jeton d'autorisation après l'avoir récupéré à l' CodeArtifact aide de vos AWS informations d'identification.
+ Définit le registre npm sur le référentiel spécifié par l'`--repository`option.
+ **Pour npm 6 et versions antérieures :** ajoute `"always-auth=true"` afin que le jeton d'autorisation soit envoyé pour chaque commande npm.

La période d'autorisation par défaut après l'appel `login` est de 12 heures et `login` doit être appelée pour actualiser régulièrement le jeton. Pour plus d'informations sur le jeton d'autorisation créé avec la `login` commande, consultez[Jetons créés avec la `login` commande](tokens-authentication.md#auth-token-login).

## Configuration de npm sans utiliser la commande de connexion
<a name="configuring-npm-without-using-the-login-command"></a>

Vous pouvez configurer npm avec votre CodeArtifact référentiel sans la `aws codeartifact login` commande en mettant à jour manuellement la configuration npm.

**Pour configurer npm sans utiliser la commande de connexion**

1. Dans une ligne de commande, récupérez un jeton CodeArtifact d'autorisation et stockez-le dans une variable d'environnement. npm utilisera ce jeton pour s'authentifier auprès de votre dépôt. CodeArtifact 
**Note**  
La commande suivante est destinée aux machines macOS ou Linux. Pour plus d'informations sur la configuration des variables d'environnement sur un ordinateur Windows, consultez[Transmettre un jeton d'authentification à l'aide d'une variable d'environnement](tokens-authentication.md#env-var).

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

1. Obtenez le point de terminaison de votre CodeArtifact dépôt en exécutant la commande suivante. Le point de terminaison de votre référentiel est utilisé pour pointer npm vers votre référentiel afin d'installer ou de publier des packages.
   + *my\$1domain*Remplacez-le par votre nom de CodeArtifact domaine.
   + Remplacez *111122223333* par le numéro de AWS compte du propriétaire du domaine. Si vous accédez à un référentiel dans un domaine qui vous appartient, vous n'avez pas besoin de l'inclure`--domain-owner`. Pour de plus amples informations, veuillez consulter [Domaines multi-comptes](domain-overview.md#domain-overview-cross-account).
   + *my\$1repo*Remplacez-le par le nom de votre CodeArtifact dépôt.

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

   L'URL suivante est un exemple de point de terminaison du référentiel.

   ```
   https://my_domain-111122223333.d.codeartifact.us-west-2.amazonaws.com/npm/my_repo/
   ```
**Important**  
L'URL du registre doit se terminer par une barre oblique (/). Dans le cas contraire, vous ne pourrez pas vous connecter au référentiel.

1. Utilisez la `npm config set` commande pour définir le registre sur votre CodeArtifact référentiel. Remplacez l'URL par l'URL du point de terminaison du référentiel de l'étape précédente.

   ```
   npm config set registry=https://my_domain-111122223333.d.codeartifact.region.amazonaws.com/npm/my_repo/
   ```
**Note**  
Pour utiliser un point de terminaison à double pile, utilisez le `codeartifact.region.on.aws` point de terminaison.

1. Utilisez la `npm config set` commande pour ajouter votre jeton d'autorisation à votre configuration npm.

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

   **Pour npm 6 ou inférieur :** pour que npm transmette toujours le jeton d'authentification CodeArtifact, même pour les `GET` demandes, définissez la variable de `always-auth` configuration avec. `npm config set` 

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

**Exemple de fichier de configuration npm () `.npmrc`**

 Voici un exemple de `.npmrc` fichier après avoir suivi les instructions précédentes pour définir le point de terminaison CodeArtifact du registre, ajouter un jeton d'authentification et configurer`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
```

## Exécution de commandes npm
<a name="running-npm-commands"></a>

Après avoir configuré le client npm, vous pouvez exécuter les commandes npm. En supposant qu'un package soit présent dans votre dépôt ou dans l'un de ses référentiels en amont, vous pouvez l'installer avec`npm install`. Par exemple, utilisez ce qui suit pour installer le `lodash` package.

```
npm install lodash
```

Utilisez la commande suivante pour publier un nouveau package npm dans un CodeArtifact référentiel.

```
npm publish
```

Pour plus d'informations sur la création de packages npm, voir [Création de modules Node.js](https://docs.npmjs.com/getting-started/creating-node-modules) sur le site Web de documentation de npm. Pour une liste des commandes npm prises en charge par CodeArtifact, consultez [npm Command Support](npm-commands.md). 

## Vérification de l'authentification et de l'autorisation npm
<a name="verifying-npm-authentication-and-authorization"></a>

L'invocation de la `npm ping` commande permet de vérifier les points suivants :
+ Vous avez correctement configuré vos informations d'identification afin de pouvoir vous authentifier auprès d'un CodeArtifact référentiel.
+ La configuration d'autorisation vous accorde l'`ReadFromRepository`autorisation.

Le résultat d'un appel réussi de `npm ping` ressemble à ce qui suit.

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

L'`-d`option oblige npm à imprimer des informations de débogage supplémentaires, y compris l'URL du référentiel. Ces informations permettent de confirmer facilement que npm est configuré pour utiliser le référentiel que vous attendez.

## Revenir au registre npm par défaut
<a name="revert-default-npm-registry"></a>

La configuration de npm with CodeArtifact définit le registre npm sur le référentiel spécifié CodeArtifact . Vous pouvez exécuter la commande suivante pour rétablir le registre npm sur son registre par défaut lorsque vous avez terminé de vous connecter à CodeArtifact.

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

## Résolution des problèmes d'installation lents avec npm 8.x ou supérieur
<a name="troubleshooting-slow-npm-install"></a>

Il existe un problème connu dans les versions 8.x et supérieures de npm : si une demande est envoyée à un référentiel de packages et que le référentiel redirige le client vers Amazon S3 au lieu de diffuser directement les actifs, le client npm peut se bloquer pendant plusieurs minutes par dépendance. 

Les CodeArtifact référentiels étant conçus pour toujours rediriger la demande vers Amazon S3, ce problème se produit parfois, ce qui entraîne de longs délais de construction en raison des longs délais d'installation de npm. Les instances de ce comportement se présenteront sous la forme d'une barre de progression affichée pendant plusieurs minutes.

Pour éviter ce problème, utilisez les `progress=false` drapeaux `--no-progress` or avec les commandes `npm` cli, comme indiqué dans l'exemple suivant.

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