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.
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
- Tiendana CLI (
tdn) instalado. Descarga el instalador de tu plataforma desde los releases de tiendana-cli. - AWS CLI v2, que
tdnusa para pedir el token.tdnverifica sus dependencias al arrancar y te dice cómo instalar lo que falte. - Sesión SSO activa en el perfil
tiendana. Si venció,tdnlo 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:
- 🔑 Pide un token de CodeArtifact con el perfil
tiendana(otro perfil:tdn auth npm --profile <perfil>). - 📝 Escribe en
~/.npmrcel registro del scope@tiendanay el token, sin tocar el resto de tu configuración. - ✅ 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 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:
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
auth:codeartifactLos 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:GetAuthorizationTokencodeartifact:ReadFromRepositorysts: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.