Cette documentation a été traduite automatiquement par IA.
Dans NocoBase, les commandes vous permettent d'exécuter des opérations liées aux applications ou aux plugins directement depuis la ligne de commande. Il peut s'agir de tâches système, d'opérations de migration ou de synchronisation, d'initialisation de configurations, ou encore d'interactions avec des instances d'application en cours d'exécution. Les développeurs peuvent définir des commandes personnalisées pour leurs plugins, les enregistrer via l'objet app, et les exécuter dans la CLI sous la forme nocobase <commande>.
Dans NocoBase, l'enregistrement des commandes se divise en deux catégories :
| Type | Méthode d'enregistrement | Le plugin doit-il être activé ? | Scénarios typiques |
|---|---|---|---|
| Commande dynamique | app.command() | ✅ Oui | Commandes liées à la logique métier du plugin |
| Commande statique | Application.registerStaticCommand() | ❌ Non | Commandes d'installation, d'initialisation, de maintenance |
Utilisez app.command() pour définir des commandes de plugin. Celles-ci ne peuvent être exécutées qu'une fois le plugin activé. Les fichiers de commande doivent être placés dans le répertoire src/server/commands/*.ts du plugin.
Exemple
Description
app.command('echo') : Définit une commande nommée echo..option('-v, --version') : Ajoute une option à la commande..action() : Définit la logique d'exécution de la commande.app.version.get() : Récupère la version actuelle de l'application.Exécuter la commande
Enregistrées via Application.registerStaticCommand(), les commandes statiques peuvent être exécutées sans activer les plugins. Elles sont idéales pour les tâches d'installation, d'initialisation, de migration ou de débogage. Enregistrez-les dans la méthode staticImport() de la classe du plugin.
Exemple
Exécuter la commande
Description
Application.registerStaticCommand() enregistre les commandes avant l'instanciation de l'application.Les objets de commande offrent trois méthodes d'assistance optionnelles pour contrôler le contexte d'exécution de la commande :
| Méthode | Rôle | Exemple |
|---|---|---|
ipc() | Communique avec les instances d'application en cours d'exécution (via IPC) | app.command('reload').ipc().action() |
auth() | Vérifie que la configuration de la base de données est correcte | app.command('seed').auth().action() |
preload() | Précharge la configuration de l'application (exécute app.load()) | app.command('sync').preload().action() |
Description de la configuration
ipc()
Par défaut, les commandes s'exécutent dans une nouvelle instance d'application.
Après avoir activé ipc(), les commandes interagissent avec l'instance d'application en cours d'exécution via la communication inter-processus (IPC). Cette méthode est adaptée aux commandes d'opérations en temps réel (comme le rafraîchissement du cache ou l'envoi de notifications).
auth()
Vérifie si la configuration de la base de données est disponible avant l'exécution de la commande.
Si la configuration de la base de données est incorrecte ou si la connexion échoue, la commande ne sera pas exécutée. Cette méthode est couramment utilisée pour les tâches impliquant des écritures ou des lectures dans la base de données.
preload()
Précharge la configuration de l'application avant d'exécuter la commande, ce qui équivaut à exécuter app.load().
Convient aux commandes qui dépendent de la configuration ou du contexte du plugin.
Pour plus de méthodes API, veuillez consulter AppCommand.
Initialiser les données par défaut
Recharger le cache pour une instance en cours d'exécution (mode IPC)
Enregistrement statique d'une commande d'installation