uor-steward-cli
v1.1.0
Published
Herramienta CLI para visualizar dependencias y auditar monorepos con pnpm y Python
Maintainers
Readme
🕵️♂️ Steward CLI
Herramienta CLI profesional para explorar, analizar y auditar la arquitectura de monorepos con PNPM y proyectos Python.
Steward es un explorador interactivo que visualiza las dependencias de tu monorepo (JavaScript/TypeScript) o ecosistema Python, detecta vulnerabilidades de seguridad y verifica versiones obsoletas en tiempo real mediante un dashboard local con modo oscuro y actualizaciones en vivo.
✨ Características Principales
📊 Visualización Interactiva
- Diagrama de flujo con ReactFlow mostrando apps, libs, herencias y catálogos
- Navegación intuitiva con zoom, pan y reorganización de nodos
- Indicadores visuales de relaciones entre paquetes (workspace, catalog)
- Modo oscuro completo para trabajar de noche 🌙
🐍 Soporte Multi-Lenguaje
- JavaScript/TypeScript: Monorepos PNPM con soporte completo de catalogs
- Python: Requirements.txt, Poetry (pyproject.toml), Pipfile y setup.py
- Detección automática del tipo de proyecto
📑 Exploración de PNPM Catalogs
- Visualización de todos los catálogos definidos en
pnpm-workspace.yaml - Detecta dependencias obsoletas ("fantasmas") no usadas por ningún paquete
- Muestra qué proyectos consumen cada catálogo
🛡️ Auditoría de Seguridad Inteligente
- PNPM: Integración con
pnpm audit - Python: Soporte para
pip-auditysafety - Modal de Reporte Detallado con mitigaciones sugeridas y agrupación de CVEs
- Indicadores visuales de severidad (Critical, High, Medium, Low)
🔍 Verificación de Versiones
- Compara versiones locales vs. últimas en NPM/PyPI
- Verificación individual o masiva de todas las dependencias
- Indicadores de versiones obsoletas con recomendaciones
🎭 Detección Automática
- Identifica proyectos E2E, apps, librerías y entornos Poetry
- Análisis de cobertura de tests (si existe
coverage-summary.json) - Detección de conflictos de versiones entre paquetes
⚡ Live Reload
- Refresca automáticamente el dashboard tras cambios en:
package.jsonpnpm-workspace.yamlrequirements.txtpyproject.toml
📦 Instalación y Uso
No necesitas configurar nada. Navega al directorio de tu monorepo (donde está pnpm-workspace.yaml, requirements.txt o pyproject.toml) y ejecuta:
Opción A: Ejecución directa (Recomendada)
Usando npx, descargarás y ejecutarás siempre la última versión sin instalar nada globalmente:
npx uor-steward-cliOpción B: Instalación global
Si prefieres tener el comando disponible permanentemente:
npm install -g uor-steward-cli
stewardOpción C: Con opciones adicionales
# Sin abrir navegador automáticamente
npx uor-steward-cli --no-browser
# En puerto personalizado
npx uor-steward-cli --port=8080
# Combinar opciones
npx uor-steward-cli --no-browser --port=8080🚀 Guía de Inicio Rápido
Para Monorepos PNPM
Navega a tu monorepo:
cd /path/to/your/monorepoEjecuta Steward:
npx uor-steward-cliSe abrirá automáticamente tu navegador en
http://localhost:13042Explora:
- Diagrama de flujo: Visualiza la arquitectura de tu monorepo
- Sidebar derecho: Revisa tus catálogos PNPM
- Tabla inferior: Analiza todas las dependencias consolidadas
Para Proyectos Python
Navega a tu proyecto Python:
cd /path/to/your/python-projectEjecuta Steward:
npx uor-steward-cliSteward detectará automáticamente tus archivos:
requirements.txtrequirements/*.txt(con herencias -r)pyproject.toml(Poetry)Pipfilesetup.py
🎨 Interfaz del Dashboard
Header
- Nombre del proyecto: Detectado automáticamente
- Tipo de proyecto: PNPM Monorepo o Python Project
- Botón de tema: Alterna entre modo claro y oscuro
- Indicador Live Reload: Muestra cuando hay cambios detectados
Diagrama de Flujo (Parte Superior)
- Nodos de Apps: 🚀 (color verde/naranja según proyecto)
- Nodos E2E: 🎭 (color morado)
- Nodos de Catálogos: 📑 (color gris con borde punteado)
- Conexiones: Líneas animadas mostrando dependencias
Tabla de Dependencias (Parte Inferior)
| Columna | Descripción | |---------|-------------| | Librería | Nombre del paquete (⚠️ indica conflictos de versión) | | Tipo | Dependency, DevDependency, Production, Development, Testing | | Consumidores | Chips coloreados mostrando qué proyectos lo usan | | Versión Local | Badge con color según tipo (catalog, workspace, normal) | | Seguridad | Se llena al ejecutar auditoría (✅ Seguro / 🚨 Vulnerable) | | Última en NPM/PyPI | Botón para verificar versión más reciente |
Botones de Acción
- 🔍 Buscar: Filtra la tabla de dependencias
- 📥 Exportar CSV: Descarga la tabla completa
- 🛡️ Auditar Seguridad: Ejecuta análisis de vulnerabilidades
- ⚡ Verificar Todas: Consulta NPM/PyPI para todas las dependencias
- ⛔ Cancelar: Detiene la verificación masiva en curso
💡 Casos de Uso
1. Detectar Dependencias Obsoletas en Catálogos
Problema: Tienes dependencias en tu pnpm-workspace.yaml que ya no usa ningún paquete.
Solución:
- Abre Steward en tu monorepo
- Revisa el sidebar de "PNPM Catalogs"
- Busca chips con 👻 OBSOLETO (fondo rojo)
- Elimina esas dependencias del YAML para mantener limpio tu catálogo
2. Auditar Vulnerabilidades
Problema: Necesitas saber si tus dependencias tienen vulnerabilidades conocidas.
Solución:
- Haz clic en 🛡️ Auditar Seguridad
- Steward ejecutará
pnpm audit(opip-auditpara Python) - Las filas con vulnerabilidades se destacarán en rojo
- Haz clic en los chips rojos para ver detalles en el modal
- Sigue las recomendaciones de versión segura
3. Detectar Conflictos de Versiones
Problema: Múltiples versiones de la misma librería en tu monorepo.
Solución:
- La tabla mostrará ⚠️ junto al nombre de librerías con conflictos
- Las filas con conflicto tendrán fondo amarillo
- Revisa las versiones en la columna "Versión Local"
- Considera alinear todas a una sola versión o usar catálogos
4. Actualizar Dependencias
Problema: Necesitas saber cuáles de tus dependencias están desactualizadas.
Solución:
- Haz clic en ⚡ Verificar Todas
- Steward consultará NPM/PyPI para cada dependencia
- Verás badges rojos/amarillos/verdes indicando:
- 🔴 Rojo: Muy desactualizada (major version)
- 🟡 Amarillo: Desactualizada (minor/patch)
- 🟢 Verde: Actualizada
- Haz clic en versiones individuales para actualizar selectivamente
🎯 Arquitectura del Proyecto
steward-cli/
├── index.js # Entry point del CLI
├── lib/
│ ├── constants.js # Sistema de constantes centralizadas
│ ├── extractors.js # Lectura de archivos (PNPM, Python)
│ ├── processors.js # Transformación de datos
│ ├── flow-generator.js # Generación de nodos ReactFlow
│ ├── html-generators.js # Construcción de HTML
│ └── server.js # Servidor HTTP y APIs
└── public/
├── client.js # Lógica del navegador
└── styles.css # Sistema de diseño completoFlujo de Datos
Usuario ejecuta CLI
↓
index.js detecta directorio
↓
server.js inicia HTTP server
↓
detectProjectType() → PNPM o Python?
↓
extractors.js lee archivos
↓
processors.js consolida datos
↓
flow-generator.js crea nodos/edges
↓
html-generators.js construye UI
↓
client.js maneja interacciones🔧 Troubleshooting
El puerto está ocupado
Problema: ⚠️ El puerto 13042 está ocupado
Solución:
# Usa un puerto diferente
npx uor-steward-cli --port=8080
# O cierra otras instancias de Steward
pkill -f stewardNo detecta mi proyecto
Problema: "No se detectó un monorepo PNPM ni un proyecto Python válido"
Solución:
- Asegúrate de estar en el directorio raíz del proyecto
- Verifica que existe uno de estos archivos:
pnpm-workspace.yaml(PNPM)requirements.txt(Python)pyproject.toml(Python)Pipfile(Python)
La auditoría no funciona
Problema: Error al ejecutar pnpm audit o pip-audit
Solución PNPM:
# Asegúrate de tener PNPM instalado
npm install -g pnpm
# Verifica que tu lockfile esté actualizado
pnpm installSolución Python:
# Instala pip-audit
pip install pip-audit
# O usa safety como alternativa
pip install safetyLive Reload no funciona
Problema: Los cambios en archivos no se reflejan
Solución:
- Presiona
F5manualmente para refrescar - Asegúrate de guardar los archivos después de editarlos
- En algunos sistemas, el file watcher puede tener limitaciones
🤝 Contribuir
¿Encontraste un bug? ¿Tienes una idea para mejorar Steward? ¡Las contribuciones son bienvenidas!
- Fork el repositorio
- Crea una rama para tu feature (
git checkout -b feature/amazing-feature) - Commit tus cambios (
git commit -m 'Add amazing feature') - Push a la rama (
git push origin feature/amazing-feature) - Abre un Pull Request
📝 Licencia
MIT © mirrabenjamin
🙏 Agradecimientos
- ReactFlow - Por la increíble librería de diagramas
- PNPM - Por el mejor gestor de paquetes para monorepos
- Comunidad de Node.js y Python - Por las herramientas de auditoría
📚 Documentación Adicional
- Documentación de Arquitectura - Detalles técnicos de los módulos
- Guía de Desarrollo - Para contribuidores
¿Te gusta Steward? ⭐ Dale una estrella en GitHub y compártelo con tu equipo!
