Qué hace
spraxium generate crea un archivo fuente nuevo desde un schematic con nombre y lo conecta en el módulo correcto. El comando acepta el nombre del schematic y el nombre del archivo como argumentos; si falta alguno, aparece un selector interactivo. Todos los nombres de clase generados se normalizan a PascalCase y los nombres de archivo a kebab-case, así que no tienes que preocuparte por convenciones de nombres a mano.
spraxium generate [schematic] [name]
# alias:
spraxium g [schematic] [name]Este comando aporta más valor cuando quieres velocidad sin perder consistencia del proyecto. En vez de crear un archivo manualmente, elegir carpeta, añadir decorators y luego recordar registrarlo en un módulo, dejas que el CLI produzca un punto de partida alineado con el framework en un solo paso.
Cuándo usar generate en lugar de escribir archivos a mano
Usa spraxium generate cuando el archivo que necesitas ya coincide con un patrón conocido del framework: servicios, listeners, handlers, guards, tareas, comandos y scaffolds de módulo. Es especialmente útil al inicio de un proyecto, cuando son frecuentes la deriva de nombres y los registros olvidados.
Seguir escribiendo archivos de forma manual tiene sentido cuando estás construyendo algo intencionalmente personalizado, refactorizando a fondo un módulo existente o creando un tipo de archivo que no encaja con un schematic soportado. El CLI está para eliminar configuración repetitiva, no para reemplazar criterio técnico.
Cómo funciona la generación
Resolver schematic
El CLI lee el argumento del schematic o, si falta, muestra una lista
interactiva de los 19 schematics disponibles. Se aceptan aliases en
cualquier lugar donde se acepte el nombre completo, así que g sc ping
equivale a g slash-command ping.
Normalizar el nombre
El nombre proporcionado se divide por guiones y guiones bajos, se normaliza
a PascalCase para el nombre de clase y a kebab-case para el nombre de
archivo. Un nombre como auction-bid se convierte en AuctionBidService en
la clase y en auction-bid.service.ts como archivo.
Seleccionar módulo objetivo
Para todos los schematics que viven dentro de un módulo, el CLI escanea
src/modules/ y muestra un prompt con los módulos detectados. Selecciona el
que debe contener el archivo nuevo. Solo el schematic module omite este
paso.
Escribir el archivo
El CLI escribe el archivo generado en la subcarpeta correcta dentro del
módulo elegido, siguiendo la estructura estándar (services/, tasks/,
listeners/, etc.).
Registro automático en el módulo
Cuando el schematic lo soporta, el CLI inserta el import y el nombre de la
clase en el array correcto dentro del decorator @Module del módulo
objetivo: providers, listeners, controllers o imports.
Todos los schematics
Estructura core
Manejo de eventos
Slash commands
Prefix commands
HTTP
Componentes
Seguridad
Scheduling
Validación de nombres
El CLI bloquea patrones de sufijo repetidos para evitar nombres de archivo redundantes. Pasar invoice-service al schematic service se rechaza porque ese sufijo ya está implícito por el tipo de schematic. Usa solo invoice y el CLI añade automáticamente el sufijo correcto.
Es un detalle pequeño, pero mantiene más limpios los proyectos grandes. Evitas nombres de archivo como invoice-service.service.ts y nombres de clase como InvoiceServiceService, que es fácil crear por accidente cuando la generación es totalmente manual.
Consejos prácticos de selección
Si no estás seguro de qué schematic elegir, céntrate en el rol en runtime del archivo:
- Lógica de negocio reutilizada por muchos entrypoints: elige service.
- Un límite de eventos de Discord: elige listener.
- Definición de slash o prefix command: elige el schematic command correspondiente.
- Lógica de runtime para una interacción o comando: elige el schematic handler correspondiente.
- Checks de control de acceso o políticas: elige guard.
- Ejecución en background con temporizador: elige un schematic de scheduling.
Esta regla práctica suele bastar para elegir el scaffold correcto sin memorizar cada alias.
Ejemplos prácticos
# create a new domain module
spraxium g module billing
# create a service inside a module (prompted)
spraxium g service invoice
# create a slash command and its handler
spraxium g slash-command ping
spraxium g slash-handler ping
# create an interval task
spraxium g interval-task presence-cycleQué no hace generate
La generación te da el archivo, la forma del decorator y el registro en módulo cuando está soportado. No termina la funcionalidad por ti. Aún debes añadir lógica de negocio, completar configuración, conectar dependencias y decidir si la estructura generada encaja con el diseño final del módulo.