Saltar al contenido principal

Configuración de CodeArtifact

Los paquetes privados de Tiendana (@tiendana/*) se instalan desde AWS CodeArtifact. En tu máquina, la autenticación la hace Tiendana CLI (tdn): no hace falta ningún script en el proyecto ni llaves de acceso.

Aplicable para

Cualquier proyecto que instale paquetes con el scope @tiendana:

  • Angular (@tiendana/ngx-core, @tiendana/utils, @tiendana/web-foundation)
  • CSS/HTML (@tiendana/web-foundation, @tiendana/utils)
  • TypeScript (@tiendana/api-types)

¿Por qué necesito esto?​

@tiendana/* vive en AWS CodeArtifact, el registro privado de Tiendana. No está en:

  • ❌ npmjs.com (registro público)
  • ❌ unpkg.com, jsdelivr.com (CDNs públicas)

npm necesita un token de CodeArtifact para descargarlos. tdn lo pide con tu sesión de AWS y lo guarda en tu ~/.npmrc.

Requisitos Previos​

  1. Tiendana CLI (tdn) instalado. Descarga el instalador de tu plataforma desde los releases de tiendana-cli.
  2. AWS CLI v2, que tdn usa para pedir el token. tdn verifica sus dependencias al arrancar y te dice cómo instalar lo que falte.
  3. Sesión SSO activa en el perfil tiendana. Si venció, tdn lo detecta y te ofrece iniciar sesión; también puedes hacerlo a mano:
aws sso login --profile tiendana

Autenticar npm​

tdn auth npm

O desde la app de la barra de menú: Tiendana CLI → Registries → npm → Refresh. Cuando el registro aparece como authenticated, ya puedes instalar.

tdn auth npm:

  1. 🔑 Pide un token de CodeArtifact con el perfil tiendana (otro perfil: tdn auth npm --profile <perfil>).
  2. 📝 Escribe en ~/.npmrc el registro del scope @tiendana y el token, sin tocar el resto de tu configuración.
  3. ✅ Deja el registro público de npm para todo lo demás.

Para saber si el token sigue vigente:

tdn auth npm --status
El token vence

El token de CodeArtifact dura unas horas. Si npm install responde 401 Unauthorized, renuévalo con tdn auth npm (o Refresh en la app) y vuelve a instalar.

Configurar el Proyecto​

Cada proyecto lleva un .npmrc en su raíz que dirige el scope @tiendana a CodeArtifact. No contiene el token, así que se versiona:

.npmrc
registry=https://registry.npmjs.org/
@tiendana:registry=https://tiendana-392286044173.d.codeartifact.us-east-1.amazonaws.com/npm/Tiendana/

Con eso, y npm autenticado con tdn, la instalación es la habitual:

npm install @tiendana/ngx-core @tiendana/utils @tiendana/web-foundation
Ya no se usa auth:codeartifact

Los proyectos ya no definen el script auth:codeartifact ni copian configure-codeartifact.mjs. Si tu proyecto todavía los tiene, puedes borrarlos y autenticar con tdn auth npm.

Configuración para CI/CD​

En CI no hay tdn: el pipeline pide el token directamente con la AWS CLI, usando el rol o las credenciales del propio pipeline, y lo escribe en el ~/.npmrc de la máquina de build.

AWS Amplify​

Basado en el amplify.yml de este sitio (simplificado):

frontend:
phases:
preBuild:
commands:
- export CODEARTIFACT_AUTH_TOKEN=$(aws codeartifact get-authorization-token --domain tiendana --domain-owner 392286044173 --region us-east-1 --query authorizationToken --output text)
- echo "registry=https://registry.npmjs.org/" > ~/.npmrc
- echo "@tiendana:registry=https://tiendana-392286044173.d.codeartifact.us-east-1.amazonaws.com/npm/Tiendana/" >> ~/.npmrc
- echo "//tiendana-392286044173.d.codeartifact.us-east-1.amazonaws.com/npm/Tiendana/:_authToken=${CODEARTIFACT_AUTH_TOKEN}" >> ~/.npmrc
- npm ci

GitHub Actions​

jobs:
build:
runs-on: ubuntu-latest
permissions:
id-token: write
contents: read
steps:
- uses: actions/checkout@v4

- uses: aws-actions/configure-aws-credentials@v4
with:
role-to-assume: ${{ vars.AWS_ROLE_ARN }}
aws-region: us-east-1

- name: Authenticate npm with CodeArtifact
run: |
TOKEN=$(aws codeartifact get-authorization-token \
--domain tiendana --domain-owner 392286044173 \
--region us-east-1 --query authorizationToken --output text)
echo "registry=https://registry.npmjs.org/" > ~/.npmrc
echo "@tiendana:registry=https://tiendana-392286044173.d.codeartifact.us-east-1.amazonaws.com/npm/Tiendana/" >> ~/.npmrc
echo "//tiendana-392286044173.d.codeartifact.us-east-1.amazonaws.com/npm/Tiendana/:_authToken=${TOKEN}" >> ~/.npmrc

- run: npm ci
- run: npm run build

El rol o usuario del pipeline necesita estos permisos:

  • codeartifact:GetAuthorizationToken
  • codeartifact:ReadFromRepository
  • sts:GetServiceBearerToken

Solución de Problemas​

npm ERR! 401 Unauthorized al instalar​

El token venció o nunca se pidió. Ejecuta tdn auth npm (o Refresh en la app) y vuelve a instalar.

tdn auth npm falla al pedir el token​

La sesión SSO del perfil tiendana venció o no existe:

aws sso login --profile tiendana
tdn auth npm

Los paquetes @tiendana se buscan en npmjs.com​

Falta el .npmrc del proyecto, o el de tu usuario perdió la línea del scope. Revisa que el proyecto tenga el .npmrc de Configurar el Proyecto y vuelve a ejecutar tdn auth npm, que reescribe las líneas de @tiendana en ~/.npmrc.

Próximos Pasos​