Configure y use npm con CodeArtifact - CodeArtifact

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

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.

Configurar npm con el comando login

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.

importante

Si usa npm 10.x o 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 ~/.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.

Configurar npm sin usar el comando login

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.

    CODEARTIFACT_AUTH_TOKEN=`aws codeartifact get-authorization-token --domain my_domain --domain-owner 111122223333 --query authorizationToken --output text`
  2. 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.

    • Sustituye my_domain por tu nombre de CodeArtifact dominio.

    • Sustituya 111122223333 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.

    • Sustituya my_repo por el nombre de su repositorio. CodeArtifact

    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.

  3. Usa el npm config set comando para configurar el registro en tu repositorio. CodeArtifact 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/
  4. 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, agregar un token de autenticación y configurarlo. 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

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 en el sitio web de documentación de npm. Para obtener una lista de los comandos npm compatibles CodeArtifact, consulte npm Command Support.

Verificar la autenticación y autorización de npm

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

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

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

Solución de problemas de instalaciones lentas con npm 8.x o superior

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