logologo
Початок
Посібник
Розробка
Плагіни
API
English
简体中文
日本語
한국어
Deutsch
Français
Español
Português
Русский
Italiano
Türkçe
Українська
Tiếng Việt
Bahasa Indonesia
ไทย
Polski
Nederlands
Čeština
العربية
עברית
हिन्दी
Svenska
Початок
Посібник
Розробка
Плагіни
API
logologo

Швидкий старт

Огляд розробки плагінів
Написання першого плагіна
Структура каталогу проєкту

Серверна розробка

Огляд
Плагін (Plugin)
Колекції (таблиці даних)
Операції з базою даних (Database)
Керування джерелами даних (DataSourceManager)
Керування ресурсами (ResourceManager)
Контроль доступу (ACL)
Проміжне ПЗ (Middleware)
Кеш (Cache)
Подія (Event)
Контекст запиту (Context)
Скрипт оновлення (Migration)
Логи (Logger)
Інтернаціоналізація (I18n)
Командний рядок (Command)
Керування завданнями за розкладом (CronJobManager)
Тестування (Test)

Клієнтська розробка

Огляд
Плагін (Plugin)
Контекст (Context)
Маршрутизатор (Router)
Контроль доступу (ACL)
Керування джерелами даних (DataSourceManager)
Ресурс (Resource)
Запит (Request)
Стилі та теми (Styles & Themes)
Логи (Logger)
Інтернаціоналізація (I18n)
Тестування (Test)

Інше

Посібник з оновлення плагінів
Список мов
Керування залежностями
Збірка
Previous PageІнтернаціоналізація (I18n)
Next PageКерування завданнями за розкладом (CronJobManager)
Повідомлення про переклад ШІ

Ця документація була автоматично перекладена штучним інтелектом.

#Команди

У NocoBase команди використовуються для виконання операцій, пов'язаних із застосунками або плагінами, безпосередньо в командному рядку. Наприклад, це може бути запуск системних завдань, виконання міграцій або операцій синхронізації, ініціалізація конфігурації, або взаємодія з запущеними екземплярами застосунків. Розробники можуть визначати власні команди для плагінів та реєструвати їх через об'єкт app, виконуючи їх у CLI у форматі nocobase <command>.

#Типи команд

У NocoBase реєстрація команд поділяється на два типи:

ТипМетод реєстраціїЧи потрібно вмикати плагінТипові сценарії
Динамічна командаapp.command()✅ ТакКоманди, пов'язані з бізнес-логікою плагіна
Статична командаApplication.registerStaticCommand()❌ НіКоманди для встановлення, ініціалізації, обслуговування

#Динамічні команди

Використовуйте app.command() для визначення команд плагінів. Ці команди можна виконувати лише після ввімкнення плагіна. Файли команд слід розміщувати в каталозі плагіна за шляхом src/server/commands/*.ts.

Приклад

import { Application } from '@nocobase/server';

export default function (app: Application) {
  app
    .command('echo')
    .option('-v, --version')
    .action(async ([options]) => {
      console.log('Hello World!');
      if (options.version) {
        console.log('Current version:', await app.version.get());
      }
    });
}

Опис

  • app.command('echo'): Визначає команду з назвою echo.
  • .option('-v, --version'): Додає опцію до команди.
  • .action(): Визначає логіку виконання команди.
  • app.version.get(): Отримує поточну версію застосунку.

Виконання команди

nocobase echo
nocobase echo -v

#Статичні команди

Використовуйте Application.registerStaticCommand() для реєстрації. Статичні команди можуть виконуватися без ввімкнення плагінів, що робить їх ідеальними для завдань встановлення, ініціалізації, міграції або налагодження. Реєструйте їх у методі staticImport() класу плагіна.

Приклад

import { Application, Plugin } from '@nocobase/server';

export default class PluginHelloServer extends Plugin {
  static staticImport() {
    Application.registerStaticCommand((app: Application) => {
      app
        .command('echo')
        .option('-v, --version')
        .action(async ([options]) => {
          console.log('Hello World!');
          if (options.version) {
            console.log('Current version:', await app.version.get());
          }
        });
    });
  }
}

Виконання команди

nocobase echo
nocobase echo --version

Опис

  • Application.registerStaticCommand(): Реєструє команди до того, як застосунок буде інстанційовано.
  • Статичні команди зазвичай використовуються для виконання глобальних завдань, які не залежать від стану застосунку або плагіна.

#Command API

Об'єкти команд надають три додаткові допоміжні методи для керування контекстом виконання команди:

МетодПризначенняПриклад
ipc()Взаємодія з запущеними екземплярами застосунку (через IPC)app.command('reload').ipc().action()
auth()Перевірка коректності конфігурації бази данихapp.command('seed').auth().action()
preload()Попереднє завантаження конфігурації застосунку (виконання app.load())app.command('sync').preload().action()

Опис конфігурації

  • ipc() За замовчуванням команди виконуються в новому екземплярі застосунку. Після ввімкнення ipc() команди взаємодіють із поточним запущеним екземпляром застосунку через міжпроцесну комунікацію (IPC), що підходить для команд реального часу (наприклад, оновлення кешу, надсилання сповіщень).

  • auth() Перевіряє доступність конфігурації бази даних перед виконанням команди. Якщо конфігурація бази даних некоректна або з'єднання не вдалося, команда не буде продовжена. Часто використовується для завдань, що передбачають запис або читання з бази даних.

  • preload() Попередньо завантажує конфігурацію застосунку перед виконанням команди, що еквівалентно виконанню app.load(). Підходить для команд, які залежать від конфігурації або контексту плагіна.

Більше методів API дивіться в AppCommand.

#Поширені приклади

Ініціалізація даних за замовчуванням

app
  .command('init-data')
  .auth()
  .preload()
  .action(async () => {
    const repo = app.db.getRepository('users');
    await repo.create({ values: { username: 'admin' } });
    console.log('Ініціалізовано стандартного користувача admin.');
  });

Перезавантаження кешу для запущеного екземпляра (режим IPC)

app
  .command('reload-cache')
  .ipc()
  .action(async () => {
    console.log('Запит до запущеного застосунку на перезавантаження кешу...');
  });

Статична реєстрація команди встановлення

Application.registerStaticCommand((app) => {
  app
    .command('setup')
    .action(async () => {
      console.log('Налаштування середовища NocoBase...');
    });
});