# Guía de Publicación - CC Shared Library

Esta librería puede ser publicada en múltiples registros de paquetes. Aquí están las opciones disponibles:

## 📦 Opciones de Publicación

### 1. NPM Registry (Público)
```bash
npm run publish:npm
```

**Instalación en microfrontends:**
```bash
npm install cc-shared
```

### 2. GitHub Packages (Privado/Público)
```bash
# Configurar token de GitHub
export GITHUB_TOKEN=tu_token_aqui

# Publicar
npm run publish:github
```

**Instalación en microfrontends:**
```bash
# Configurar registro
npm config set @tu-organizacion:registry https://npm.pkg.github.com

# Instalar
npm install @tu-organizacion/cc-shared
```

### 3. Gitea Package Registry (Privado)
```bash
# Configurar token de Gitea
export GITEA_TOKEN=tu_token_aqui

# Publicar
npm run publish:gitea
```

**Instalación en microfrontends:**
```bash
# Configurar registro
npm config set @tu-organizacion:registry https://tu-gitea.com/api/packages/tu-usuario/npm/

# Instalar
npm install @tu-organizacion/cc-shared
```

### 4. Paquete Local (Desarrollo)
```bash
# Crear paquete local
npm run publish:local

# Instalar en microfrontend
npm install file:../ruta/a/cc-shared-1.0.3.tgz
```

### 5. Git Directo (Desarrollo)
```bash
# En tu microfrontend
npm install git+https://github.com/tu-usuario/libreria-portalcash-shared-trae.git
```

### 6. Usando npm link (Desarrollo)
```bash
# En la librería
npm link

# En tu microfrontend
npm link cc-shared
```

## 🔧 Configuración por Registro

### GitHub Packages
1. Crear token en GitHub con permisos `write:packages`
2. Configurar en `.npmrc`:
   ```
   @tu-organizacion:registry=https://npm.pkg.github.com
   //npm.pkg.github.com/:_authToken=${GITHUB_TOKEN}
   ```

### GitLab Packages
1. Crear token de proyecto con permisos `api`
2. Configurar en `.npmrc`:
   ```
   @tu-organizacion:registry=https://gitlab.com/api/v4/projects/PROJECT_ID/packages/npm/
   //gitlab.com/api/v4/projects/PROJECT_ID/packages/npm/:_authToken=${GITLAB_TOKEN}
   ```

### Gitea Package Registry
1. Crear token de acceso en Gitea con permisos `package:write`
2. Configurar en `.npmrc`:
   ```
   @tu-organizacion:registry=https://tu-gitea.com/api/packages/tu-usuario/npm/
   //tu-gitea.com/api/packages/tu-usuario/npm/:_authToken=${GITEA_TOKEN}
   ```

### Verdaccio (Privado)
1. Instalar Verdaccio: `npm install -g verdaccio`
2. Ejecutar: `verdaccio`
3. Configurar registro: `npm set registry http://localhost:4873/`

## 🚀 Flujo Recomendado

### Para Desarrollo:
1. Usar `npm link` o instalación local
2. Cambios rápidos sin publicar

### Para Testing:
1. Publicar en GitHub Packages
2. Probar en entorno de staging

### Para Producción:
1. Publicar en NPM Registry
2. Usar en entornos de producción

## 📋 Checklist Pre-Publicación

- [ ] Tests pasando (`npm run test:unit`)
- [ ] Tipos verificados (`npm run type-check`)
- [ ] Build exitoso (`npm run build-lib`)
- [ ] Versión actualizada en `package.json`
- [ ] Cambios commiteados
- [ ] Documentación actualizada

## 🔍 Verificación Post-Publicación

```bash
# Verificar que el paquete está disponible
npm view cc-shared

# Probar instalación en proyecto temporal
mkdir test-install && cd test-install
npm init -y
npm install cc-shared
```

## 🛠️ Troubleshooting

### Error de autenticación
```bash
npm login --scope=@tu-organizacion --registry=https://npm.pkg.github.com
```

### Error de permisos
```bash
npm config set @tu-organizacion:registry https://npm.pkg.github.com
```

### Limpiar caché
```bash
npm cache clean --force
```