

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

# Configure y use npm con CodeArtifact
<a name="npm-auth"></a>

Después de crear un repositorio CodeArtifact, puede usar el cliente npm para instalar y publicar paquetes. El método recomendado para configurar npm con el punto de conexión del repositorio y el token de autorización es mediante el comando `aws codeartifact login`. También puede configurar npm de forma manual.

**Contents**
+ [Configurar npm con el comando login](#configure-npm-login-command)
+ [Configurar npm sin usar el comando login](#configuring-npm-without-using-the-login-command)
+ [Ejecutar comandos npm](#running-npm-commands)
+ [Verificar la autenticación y autorización de npm](#verifying-npm-authentication-and-authorization)
+ [Volver al registro npm predeterminado](#revert-default-npm-registry)
+ [Solución de problemas de instalaciones lentas con npm 8.x o superior](#troubleshooting-slow-npm-install)

## Configurar npm con el comando login
<a name="configure-npm-login-command"></a>

Use el comando `aws codeartifact login` para obtener las credenciales para usarlas con npm.

**nota**  
Si va a acceder a un repositorio de un dominio de su propiedad, no tiene que incluir `--domain-owner`. Para obtener más información, consulte [Dominios entre cuentas](domain-overview.md#domain-overview-cross-account).

**importante**  
Si usa npm 10.x o una versión posterior, debe usar la AWS CLI versión 2.9.5 o posterior para ejecutar correctamente el comando. `aws codeartifact login`

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

Este comando realiza los siguientes cambios en el archivo \$1/.npmrc:
+ Agrega un token de autorización después de obtenerlo con tus credenciales. CodeArtifact AWS 
+ Establece el registro npm en el repositorio especificado por la opción `--repository`.
+ **Para npm 6 y versiones anteriores: se** suma `"always-auth=true"` para que el token de autorización se envíe para cada comando de npm.

El período de autorización predeterminado después de una llamada `login` es de 12 horas y `login` debe invocarse para actualizar periódicamente el token. Para obtener más información sobre el token de autorización creado con el comando `login`, consulte [Tokens creados con el comando `login`](tokens-authentication.md#auth-token-login).

## Configurar npm sin usar el comando login
<a name="configuring-npm-without-using-the-login-command"></a>

Puedes configurar npm con tu CodeArtifact repositorio sin el `aws codeartifact login` comando actualizando manualmente la configuración de npm.

**Para configurar npm sin usar el comando login**

1. En una línea de comandos, busca un token de CodeArtifact autorización y guárdalo en una variable de entorno. npm usará este token para autenticarse en tu repositorio. CodeArtifact 
**nota**  
El siguiente comando es para máquinas macOS o Linux. Para obtener información sobre la configuración de variables de entorno en un equipo Windows, consulte [Pasar un token de autenticación mediante una variable de entorno](tokens-authentication.md#env-var).

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

1. Obtén el punto final de tu CodeArtifact repositorio ejecutando el siguiente comando. El punto de conexión de su repositorio se usa para dirigir npm a su repositorio para instalar o publicar paquetes.
   + *my\$1domain*Sustitúyalo por tu nombre de CodeArtifact dominio.
   + *111122223333*Sustitúyelo por el ID de AWS cuenta del propietario del dominio. Si va a acceder a un repositorio de un dominio de su propiedad, no tiene que incluir `--domain-owner`. Para obtener más información, consulte [Dominios entre cuentas](domain-overview.md#domain-overview-cross-account).
   + *my\$1repo*Sustitúyalo por el nombre de tu CodeArtifact repositorio.

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

   La siguiente URL es un punto de conexión de repositorio de ejemplo.

   ```
   https://my_domain-111122223333.d.codeartifact.us-west-2.amazonaws.com/npm/my_repo/
   ```
**importante**  
La URL de registro debe terminar con una barra diagonal (/). De lo contrario, no puede conectarse al repositorio.

1. Usa el `npm config set` comando para configurar el registro en tu CodeArtifact repositorio. Sustituya la URL con la URL del punto de conexión del repositorio del paso anterior.

   ```
   npm config set registry=https://my_domain-111122223333.d.codeartifact.region.amazonaws.com/npm/my_repo/
   ```
**nota**  
Si quiere utilizar un punto de conexión de pila doble, use el punto de conexión `codeartifact.region.on.aws`.

1. Use el comando `npm config set` para agregar su token de autorización a su configuración de npm.

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

   **Para npm 6 o versiones anteriores:** para que npm siempre pase el token de autenticación y CodeArtifact, incluso en el caso de `GET` solicitudes, defina la variable de `always-auth` configuración con. `npm config set` 

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

**Ejemplo de archivo de configuración npm (`.npmrc`)**

 El siguiente es un `.npmrc` archivo de ejemplo después de seguir las instrucciones anteriores para establecer el punto final del CodeArtifact registro, añadir un token de autenticación y realizar la configuración. `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
```

## Ejecutar comandos npm
<a name="running-npm-commands"></a>

Después de configurar el cliente npm, puede ejecutar los comandos npm. Suponiendo que un paquete esté presente en su repositorio o en uno de sus repositorios anteriores, puede instalarlo con `npm install`. Por ejemplo, utilice lo siguiente para instalar el paquete `lodash`.

```
npm install lodash
```

Use el siguiente comando para publicar un nuevo paquete npm en un CodeArtifact repositorio.

```
npm publish
```

Para obtener información sobre cómo crear paquetes npm, consulte [Creación de módulos de Node.js](https://docs.npmjs.com/getting-started/creating-node-modules) en el sitio web de documentación de npm. Para obtener una lista de los comandos npm compatibles CodeArtifact, consulte [npm Command Support.](npm-commands.md) 

## Verificar la autenticación y autorización de npm
<a name="verifying-npm-authentication-and-authorization"></a>

La invocación del comando `npm ping` es una forma de verificar lo siguiente:
+ Ha configurado correctamente sus credenciales para poder autenticarse en un repositorio. CodeArtifact 
+ La configuración de autorización le otorga el permiso `ReadFromRepository`.

El resultado de una invocación exitosa de `npm ping` tendría el siguiente aspecto.

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

La opción `-d` hace que npm imprima información de depuración adicional, incluida la URL del repositorio. Esta información facilita la confirmación de que npm está configurado para usar el repositorio esperado.

## Volver al registro npm predeterminado
<a name="revert-default-npm-registry"></a>

Al configurar npm con, CodeArtifact se establece el registro de npm en el repositorio especificado. CodeArtifact Puede ejecutar el siguiente comando para volver a establecer el registro de npm en su registro predeterminado cuando termine de conectarse a él. CodeArtifact

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

## Solución de problemas de instalaciones lentas con npm 8.x o superior
<a name="troubleshooting-slow-npm-install"></a>

Existe un problema conocido en las versiones de npm 8.x y posteriores por el que si se realiza una solicitud a un repositorio de paquetes y el repositorio redirige el cliente a Amazon S3 en lugar de transmitir los activos directamente, el cliente npm puede bloquearse durante varios minutos por dependencia. 

Como CodeArtifact los repositorios están diseñados para redirigir siempre la solicitud a Amazon S3, a veces se produce este problema, lo que provoca tiempos de compilación prolongados debido a los largos tiempos de instalación de npm. Las instancias de este comportamiento se mostrarán como una barra de progreso durante varios minutos.

Para evitar este problema, utilice los marcadores `--no-progress` o `progress=false` con los comandos de la CLI `npm`, como se muestra en el siguiente ejemplo.

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