O que ele faz
spraxium generate cria um novo arquivo-fonte a partir de um schematic nomeado e o conecta ao módulo correto. O comando aceita o nome do schematic e o nome do arquivo como argumentos; se um deles for omitido, aparece um seletor interativo. Todos os nomes de classe gerados são normalizados para PascalCase e os nomes de arquivo para kebab-case, então você não precisa se preocupar manualmente com convenções de nomenclatura.
spraxium generate [schematic] [name]
# alias:
spraxium g [schematic] [name]Esse comando é especialmente valioso quando você quer velocidade sem abrir mão da consistência do projeto. Em vez de criar um arquivo na mão, escolher uma pasta, adicionar decorators e depois lembrar de registrar a classe no módulo, você deixa a CLI gerar um ponto de partida alinhado ao framework em uma única etapa.
Quando usar generate em vez de criar arquivos manualmente
Use spraxium generate quando o arquivo de que você precisa já corresponder a um padrão conhecido do framework: serviços, listeners, handlers, guards, tarefas, comandos e scaffolds de módulo. Ele é especialmente útil no início de um projeto, quando desvios de nomenclatura e registros esquecidos são comuns.
Criar arquivos manualmente ainda faz sentido quando você está construindo algo intencionalmente customizado, refatorando pesado um módulo existente ou criando um tipo de arquivo que não se encaixa em um schematic suportado. A CLI existe para eliminar setup repetitivo, não para substituir critério técnico.
Como a geração funciona
Identificar o schematic
A CLI lê o argumento do schematic ou, se ele estiver ausente, apresenta uma
lista interativa com todos os 19 schematics disponíveis. Aliases são aceitos
em qualquer lugar onde o nome completo é aceito, então g sc ping equivale
a g slash-command ping.
Normalizar o nome
O nome fornecido é dividido em hífens e underscores, normalizado para
PascalCase no nome da classe e para kebab-case no nome do arquivo. Um nome
como auction-bid vira AuctionBidService na classe e
auction-bid.service.ts no arquivo.
Escolher o módulo de destino
Para todos os schematics que vivem dentro de um módulo, a CLI percorre
src/modules/ e apresenta um prompt com os módulos detectados. Selecione o
módulo que deve receber o novo arquivo. Apenas o schematic module pula essa etapa.
Escrever o arquivo
A CLI grava o arquivo gerado na subpasta correta dentro do módulo escolhido,
seguindo o layout padrão (services/, tasks/, listeners/ etc.).
Registrar automaticamente no módulo
Quando o schematic oferece suporte, a CLI injeta a importação e o nome da
classe no array correto dentro do decorator @Module do módulo de destino:
providers, listeners, controllers ou imports.
Todos os schematics
Estrutura principal
Tratamento de eventos
Comandos slash
Comandos prefixados
HTTP
Components
Segurança
Agendamento
Validação de nomes
A CLI bloqueia padrões de sufixo repetidos para evitar nomes de arquivo redundantes. Passar invoice-service para o schematic service é rejeitado porque o sufixo já está implícito pelo tipo de schematic. Use apenas invoice, e a CLI acrescentará automaticamente o sufixo correto.
É um detalhe pequeno, mas que ajuda a manter projetos grandes mais limpos. Assim, você evita nomes como invoice-service.service.ts e classes como InvoiceServiceService, que surgem com facilidade quando a geração é totalmente manual.
Dicas práticas de escolha
Se você não tiver certeza sobre qual schematic escolher, foque no papel do arquivo em runtime:
- Lógica de negócio reutilizada por muitos pontos de entrada: escolha service.
- Um ponto de entrada de evento do Discord: escolha listener.
- A definição de um comando slash ou prefixado: escolha o schematic command correspondente.
- A lógica de execução de uma interação ou comando: escolha o schematic handler correspondente.
- Controle de acesso ou checagens de política: escolha guard.
- Execução em segundo plano baseada em tempo: escolha um schematic de agendamento.
Essa regra prática costuma ser suficiente para escolher o scaffold certo sem decorar todos os aliases.
Exemplos práticos
# 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-cycleO que generate não faz
A geração entrega o arquivo, o formato do decorator e o registro no módulo quando isso é suportado. Ela não conclui a funcionalidade por você. Ainda é necessário adicionar a lógica de negócio, preencher a configuração, conectar dependências e decidir se a estrutura gerada corresponde ao desenho final do módulo.