Dit document is vertaald door AI. Voor onnauwkeurigheden, raadpleeg de Engelse versie
In NocoBase worden commando's gebruikt om acties uit te voeren die gerelateerd zijn aan applicaties of plugins via de commandoregel. Denk hierbij aan het uitvoeren van systeemtaken, migratie- of synchronisatieoperaties, het initialiseren van configuraties, of het communiceren met actieve applicatie-instanties. Ontwikkelaars kunnen aangepaste commando's definiëren voor plugins en deze registreren via het app-object, waarna u ze in de CLI kunt uitvoeren als nocobase <command>.
In NocoBase is het registreren van commando's onderverdeeld in twee typen:
| Type | Registratiemethode | Moet de plugin ingeschakeld zijn? | Typische scenario's |
|---|---|---|---|
| Dynamisch commando | app.command() | ✅ Ja | Commando's gerelateerd aan plugin-functionaliteit |
| Statisch commando | Application.registerStaticCommand() | ❌ Nee | Installatie-, initialisatie- en onderhoudscommando's |
Gebruik app.command() om plugin-commando's te definiëren. Deze commando's kunnen alleen worden uitgevoerd nadat de plugin is ingeschakeld. Commando-bestanden moeten in de src/server/commands/*.ts-map van de plugin-directory worden geplaatst.
Voorbeeld
Uitleg
app.command('echo'): Definieert een commando met de naam echo..option('-v, --version'): Voegt een optie toe aan het commando..action(): Definieert de uitvoerlogica van het commando.app.version.get(): Haalt de huidige applicatieversie op.Commando uitvoeren
Gebruik Application.registerStaticCommand() om te registreren. Statische commando's kunnen worden uitgevoerd zonder dat plugins ingeschakeld hoeven te zijn. Dit is handig voor installatie-, initialisatie-, migratie- of debugtaken. Registreer ze in de staticImport()-methode van de plugin-klasse.
Voorbeeld
Commando uitvoeren
Uitleg
Application.registerStaticCommand() registreert commando's voordat de applicatie wordt geïnstantieerd.Commando-objecten bieden drie optionele hulpmethoden om de uitvoeringscontext van een commando te beheren:
| Methode | Doel | Voorbeeld |
|---|---|---|
ipc() | Communiceert met actieve applicatie-instanties (via IPC) | app.command('reload').ipc().action() |
auth() | Controleert of de databaseconfiguratie correct is | app.command('seed').auth().action() |
preload() | Laadt de applicatieconfiguratie vooraf (voert app.load() uit) | app.command('sync').preload().action() |
Uitleg configuratie
ipc()
Standaard worden commando's uitgevoerd in een nieuwe applicatie-instantie.
Na het inschakelen van ipc() communiceren commando's via interprocescommunicatie (IPC) met de momenteel actieve applicatie-instantie. Dit is geschikt voor real-time operatiecommando's (zoals het verversen van de cache of het verzenden van meldingen).
auth()
Controleert vóór de uitvoering van het commando of de databaseconfiguratie beschikbaar is.
Als de databaseconfiguratie onjuist is of de verbinding mislukt, wordt het commando niet verder uitgevoerd. Vaak gebruikt voor taken die database-schrijf- of leesbewerkingen omvatten.
preload()
Laadt de applicatieconfiguratie voorafgaand aan de uitvoering van het commando, wat gelijkstaat aan het uitvoeren van app.load().
Geschikt voor commando's die afhankelijk zijn van de configuratie of de plugin-context.
Voor meer API-methoden, zie AppCommand.
Standaardgegevens initialiseren
Cache opnieuw laden voor actieve instantie (IPC-modus)
Statische registratie van installatiecommando