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.
1 @xpulse /my-package /2 src/ 3 commands/ 4 FetchCommand.js ← extends Command 5 ChangelogCommand.js ← extends Command
Minimales Beispiel
1 2 import { Command } from '@xpulse/cli/command' ;3 4 export class HelloCommand extends Command {5 configure ( ) { 6 this 7 .setName ('tapp:hello' ) 8 .setDescription ('Sag Hallo' ) 9 .addArgument ('name' , 'Anon' , 'Name des Empfängers' ); 10 } 11 12 async run (input, output ) { 13 output.success (`Hallo ${input.getArgument('name' )} !` ); 14 return 0 ; 15 } 16 }
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 1 . node_modules/@xpulse/ */src/ commands/*.js ← installierte xParts2 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" 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
1 @xpulse /cli/2 bin/ 3 xpulse.js ← Einstiegspunkt : Autodiscovery, Parser, Input/Output, Timeout 4 src/ 5 command.js ← Command-Basisklasse mit configure (), keepAlive (), run () 6 input.js ← Input-Klasse : getArgument, getOption, getFlag, isVerbose ... 7 output.js ← Output-Klasse + interne Helfer (--help, --list, --version) 8 loader.js ← node_modules/@xpulse 9 parser.js ← CLI-Input → { name, args, rawArguments, verbose, quiet, ansi, warnings } 10 docs/ 11 index.md 12 de/ index, guide, api, schema 13 en/ index, guide, api, schema 14 test/ 15 command.test.js 16 input.test.js 17 parser.test.js 18 loader.test.js 19 README.md 20 package.json 21 xpulse.json
Exports
1 import { Command } from '@xpulse/cli/command' ; 2 import { Input } from '@xpulse/cli/input' ; 3 import { Output } from '@xpulse/cli/output' ;