xPulse
🇩🇪 DE

Schema

Command-Convention

Jedes xPart das CLI-Commands anbietet, legt Command-Klassen unter src/commands/ ab. Eine Datei = eine Command-Klasse. Kein cli.js, kein Registrieren.

@xpulse/my-package/
src/
commands/
FetchCommand.js ← extends Command
ChangelogCommand.js ← extends Command

Minimales Beispiel

// src/commands/HelloCommand.js
import { Command } from '@xpulse/cli/command';
export class HelloCommand extends Command {
configure() {
this
.setName('tapp:hello')
.setDescription('Sag Hallo')
.addArgument('name', 'Anon', 'Name des Empfängers');
}
async run(input, output) {
output.success(`Hallo ${input.getArgument('name')}!`);
return 0;
}
}

Pflichtfelder

Field Beschreibung
setName() Command-Name – namespace:area:command
setDescription() Kurzbeschreibung für --help und --list
run() Ausführungslogik – gibt Exit Code zurück

Autodiscovery-Reihenfolge

1. node_modules/@xpulse/*/src/commands/*.js ← installierte xParts
2. src/commands/*.js ← lokales Projekt

Das lokale Projekt verhält sich wie ein implizites xPart – kein npm link nötig.

Namespace-Convention

Command Namespace xPart
doc:fetch doc @xpulse/doc
project:config:show project @xpulse/config
repo:changelog:generate repo @xpulse/repo
release:prepare release @xpulse/release

`package.json` Anforderungen

{
"type": "module"
}

"type": "module" ist Pflicht, da das gesamte xPulse Ökosystem ESM verwendet. Ohne diese Angabe schlägt Node.js beim Laden von Command-Dateien mit import-Statements fehl.

Paket-Struktur

@xpulse/cli/
bin/
xpulse.js ← Einstiegspunkt: Autodiscovery, Parser, Input/Output, Timeout
src/
command.js ← Command-Basisklasse mit configure(), keepAlive(), run()
input.js ← Input-Klasse: getArgument, getOption, getFlag, isVerbose ...
output.js ← Output-Klasse + interne Helfer (--help, --list, --version)
loader.js ← node_modules/@xpulse/*/src/commands/*.js + src/commands/*.js
parser.js ← CLI-Input → { name, args, rawArguments, verbose, quiet, ansi, warnings }
docs/
index.md
de/ index, guide, api, schema
en/ index, guide, api, schema
test/
command.test.js
input.test.js
parser.test.js
loader.test.js
README.md
package.json
xpulse.json

Exports

import { Command } from '@xpulse/cli/command'; // Command-Basisklasse – für xParts
import { Input } from '@xpulse/cli/input'; // Input-Klasse (selten direkt nötig)
import { Output } from '@xpulse/cli/output'; // Output-Klasse (selten direkt nötig)
de/schema.md 2026-03-16