--- layout: default title: CLI permalink: /cli/ --- # 🛠️ CLI ## Qué es El subpath `./cli` agrupa dos cosas: 1. **Primitives visuales** — funciones puras que renderizan UI estilo terminal (`renderBox`, `renderTable`, `renderStep`, `renderHeader`, `renderDivider`) y los spinners (`SpinnerManager`, `NoopSpinner`). 2. **Sistema de comandos** — `CommandProcessor`, las 8 implementaciones de `ICommand` y el factory `createDefaultCLI`. Todo se importa desde `@mks2508/better-logger/cli`. Las primitives se reexportan también desde `@mks2508/better-logger/playground` por compatibilidad. > ⚠️ **No es un binario standalone.** `./cli` no expone un ejecutable de sistema: no hay un `better-logger` en el `PATH` ni un script `bin`. Los comandos se invocan desde código (`await logger.cli('/help')`) o desde la DevTools del navegador cuando se activa el modo interactivo (`window.cli('help')`). ## Cuándo usar cada cara | Necesidad | Ruta | |--------------------------------------------------------------|-----------------------------------------------------| | Inspección mutación de la config desde la DevTools | `logger.cli('/config theme=neon')` | | Demo del logger / showcase de features en pantalla | `logger.cli('/demo')` o botón "demo" en playground | | Primitives en scripts Node (builds, migradores, scrapers) | `logger.box / .step / .header / .cliTable` | | Spinners deterministas en scripts CLI Node (TTY vs CI) | `logger.spinner('...').start()` | | Spinners + primitives accesibles desde tu código (`renderBox`) | `import { renderBox } from '@mks2508/better-logger/cli'` | Regla: si trabajas contra la `Logger` directamente, los métodos `logger.cli / .box / .step / .spinner` ya están disponibles sin imports adicionales. Si quieres reusar las primitives en otro lado, importa desde el subpath. ## Distinción con un binario ```typescript // ❌ Esto no existe — ./cli NO registra un bin // $ better-logger themes // ✅ En su lugar, vía código await logger.cli('/themes'); // ✅ O desde la DevTools del browser (modo interactivo activado) // > cli('themes') // la barra "/" se añade automáticamente ``` Si necesitas una CLI de sistema separada (`