xPulse
πŸ‡©πŸ‡ͺ DE
Seiten
Inhalt

@xpulse/cli – API

Events

Event Payload Wann
cli:init { sources } Discovery beginnt
cli:command:discovered { name, alias, source } Command gefunden
cli:ready { count, commands } Alle Commands geladen
cli:command { name, args, verbose } Command startet
cli:done { name, exitCode, duration } Command abgeschlossen

Command schreiben

import { Command } from '@xpulse/cli/command';
export class MyCommand extends Command {
configure() {
this.setName('my:command')
.setDescription('Macht etwas')
.addArgument('name', null, 'Name')
.addFlag('dry-run', false, 'Nur simulieren');
}
async run(input, output) {
const name = input.getArgument('name');
const dryRun = input.getFlag('dryRun');
output.success(`Hallo ${name}!`);
return 0;
}
}

Globale Flags

Flag KΓΌrzel Beschreibung
--help [command] -h CLI-Hilfe, oder Command-Hilfe wenn Name angegeben
--list – Alle Commands mit Alias und Beschreibung
--version -v Version ausgeben
--verbose -V Verbose-Ausgabe β†’ input.isVerbose()
--quiet -q Nur Fehler β†’ input.isQuiet()
--no-ansi – Keine Farben β†’ input.isAnsi() = false
--no-debug – Logger-Console-Level auf warn hochsetzen – info/debug erscheinen nicht auf der Konsole, Log-Datei bleibt unverΓ€ndert

In Commands erreichbar via input.isNoDebug().

Bootstrap

Vor dem Command-Start ruft @xpulse/cli app.init() aus @xpulse/app auf (sofern installiert). Damit haben alle Commands vollen Service-Context (Config, Logger, Debug, Router, Controller) – ohne dass der HTTP-Server startet.

Ist @xpulse/app nicht installiert, wird config.load() als Fallback verwendet.

Konfiguration

{ "cli": { "timeout": 30 } }
de/api.md 2026-03-27