Команда
В NocoBase команды используются для выполнения операций, связанных с приложениями или плагинами, в командной строке: запуск системных задач, выполнение операций миграции или синхронизации, инициализация конфигур ации и взаимодействие с запущенными экземплярами приложений. Разработчики могут определять собственные команды для плагинов и регистрировать их через объект app, выполняя их в интерфейсе командной строки как nocobase <command>.
Типы команд
В NocoBase регистрация команд разделена на два типа:
Динамические команды
Используйте app.command() для определения команд плагина. Команды можно выполнять только после включения плагина. Командные файлы должны быть помещены в src/server/commands/*.ts в каталоге плагина.
Пример
Описание
app.command('echo'): определяет команду с именемecho..option('-v, --version'): добавляет опцию к команде..action(): определяет логику выполнения команд.app.version.get(): получает текущую версию приложения.
Выполнение команды
Статические команды
Для регистрации используйте Application.registerStaticCommand(). Статические команды можно выполнять без включения плагинов, что подходит для задач установки, инициализации, миграции или отладки. Регистрация выполняется в методе staticImport() класса плагина.
Пример
Выполнение команды
Описание
Application.registerStaticCommand()регистрирует команды до создания экземпляра приложения.- Статические команды обычно используются для выполнения глобальных задач, не связанных с состоянием приложения или плагина.
API команд
Объекты команд предоставляют три дополнительных вспомогательных метода для управления контекстом выполнения:
Описание параметров
-
ipc()По умолчанию команды выполняются в новом экземпляре приложения. После включенияipc()команды взаимодействуют с запущенным в данный момент экземпляром приложения посредством межпроцессного взаимодействия (IPC). Это подходит для команд реального времени (например, обновление кэша и отправка уведомлений). -
auth()Перед выполнением команды проверьте, доступна ли конфигурация базы данных. Если конфигурация базы данных неверна или соединение не установлено, команда не будет продолжена. Обычно используется для задач, связанных с записью или чтением базы данных. -
preload()Предварительно загрузите конфигурацию приложения перед выполнением команды, что эквивалентно выполнениюapp.load(). Подходит для команд, которые зависят от конфигурации или контекста плагина.
Дополнительные методы API см. в разделе AppCommand.
Общие примеры
Инициализация данных по умолчанию
Перезагрузка кэша для работающего экземпляра (режим IPC)
Статическая регистрация команды установки

