Arquitectura Lógica
This content is not available in your language yet.
La arquitectura de la CLI de Lynx se basa en la división estricta entre la definición de los argumentos en la interfaz y la ejecución lógica de bajo nivel de los comandos.
Estructura Core
Sección titulada «Estructura Core»El punto de anclaje principal para el binario se ubica en el orquestador central:
cli/lynx.ts: Actúa como el enrutador maestro. Captura la entrada de la terminal, parsea las opciones y delega la ejecución al comando correspondiente.utils/load-env.ts: Un mecanismo crítico y de alto rendimiento que evalúa, valida (con Zod) y carga en la sesión actual las variables de entorno necesarias antes de que la aplicación empiece a correr.
Flujo de un Comando
Sección titulada «Flujo de un Comando»El ciclo de vida de un comando, desde que el usuario presiona “Enter” hasta su resolución, es predecible:
graph TD
A[lynx <comando>] --> B{Parseo de Argumentos}
B --> C(Carga de Entorno: load-env)
C --> D[Ejecutor del Comando]
D --> E(Sistema de Archivos)
D --> F(Sincronización de Secretos)
E --> G[Salida Clack Prompts]
F --> G
style A fill:#000000,stroke:#333,stroke-width:2px,color:#fff
Sistema de Archivos y Dependencias Nativas
Sección titulada «Sistema de Archivos y Dependencias Nativas»A diferencia del resto de los paquetes en Lynx que son en su mayoría agnósticos al sistema, @lynx/cli interactúa pesadamente con el sistema operativo:
- Búsqueda por Patrones (Globbing): Se utiliza
micromatchpara localizar patrones complejos de rutas en el monorepo (por ejemplo, encontrar todos los*.module.tsen NestJS). - Escucha Activa (Watching): Se integra
chokidarpara los comandos que requieren escuchar alteraciones en los archivos de configuración y disparar reinicios o regeneraciones.
Creación de Comandos
Sección titulada «Creación de Comandos»Para extender las capacidades operativas del monorepo añadiendo un nuevo comando a la CLI:
- Definir el Parseador: Crear la lógica de definición de argumentos (por ejemplo, opciones como
--forceo--path). - Crear el Runner: Implementar la función de negocio (ej.
runMyCommand(opciones)). Aísla esta función puramente para que pueda ser evaluada y probada sin necesidad de invocarprocess.exit(). - Estilizar el Output: Utilizar las herramientas de
@clack/prompts(intro,spinner,outro) para comunicar en tiempo real el progreso de la acción al ingeniero de software.