# Обзор разработки плагинов

NocoBase использует **микроядерную архитектуру**, где ядро отвечает только за планирование жизненного цикла плагинов, управление зависимостями и инкапсуляцию базовых возможностей. Все бизнес-функции предоставляются в виде плагинов. Поэтому понимание структуры, жизненного цикла и способов управления плагинами — это первый шаг к кастомизации NocoBase.

## Ключевые концепции

- **Plug and Play (Подключай и работай)**: Вы можете устанавливать, включать или отключать плагины по мере необходимости, гибко комбинируя бизнес-функции без изменения кода.
- **Полная интеграция (Full-stack)**: Плагины обычно включают в себя как серверную, так и клиентскую реализацию, обеспечивая согласованность между логикой данных и взаимодействием с пользовательским интерфейсом.

## Базовая структура плагина

Каждый плагин представляет собой независимый npm-пакет и обычно имеет следующую структуру каталогов:

```bash
plugin-hello/
├─ package.json          # Название плагина, зависимости и метаинформация плагина NocoBase
├─ client.js             # Результат сборки фронтенда для загрузки во время выполнения
├─ server.js             # Результат сборки бэкенда для загрузки во время выполнения
├─ src/
│  ├─ client/            # Исходный код клиента, может регистрировать блоки, действия, поля и т.д.
│  └─ server/            # Исходный код сервера, может регистрировать ресурсы, события, команды и т.д.
```

## Соглашения о каталогах и порядок загрузки

По умолчанию NocoBase сканирует следующие каталоги для загрузки плагинов:

```bash
my-nocobase-app/
├── packages/
│   └── plugins/          # Плагины в процессе разработки (наивысший приоритет)
└── storage/
    └── plugins/          # Скомпилированные плагины, например, загруженные или опубликованные
```

- `packages/plugins`: Каталог для локальной разработки плагинов, поддерживающий компиляцию и отладку в реальном времени.
- `storage/plugins`: Здесь хранятся скомпилированные плагины, например, коммерческие версии или сторонние плагины.

## Жизненный цикл и состояния плагина

Плагин обычно проходит следующие этапы:

1.  **Создание (create)**: Создание шаблона плагина с помощью CLI.
2.  **Загрузка (pull)**: Загрузка пакета плагина локально, но он еще не записан в базу данных.
3.  **Включение (enable)**: При первом включении выполняется «регистрация + инициализация»; при последующих включениях загружается только логика.
4.  **Отключение (disable)**: Остановка работы плагина.
5.  **Удаление (remove)**: Полное удаление плагина из системы.

:::tip

- `pull` отвечает только за загрузку пакета плагина; фактический процесс установки запускается при первом `enable`.
- Если плагин только загружен (`pull`), но не включен, он не будет загружен.

:::

### Примеры команд CLI

```bash
# 1. Создание скелета плагина
yarn pm create @my-project/plugin-hello

# 2. Загрузка пакета плагина (скачивание или привязка)
yarn pm pull @my-project/plugin-hello

# 3. Включение плагина (при первом включении устанавливается автоматически)
yarn pm enable @my-project/plugin-hello

# 4. Отключение плагина
yarn pm disable @my-project/plugin-hello

# 5. Удаление плагина
yarn pm remove @my-project/plugin-hello
```

## Интерфейс управления плагинами

Откройте менеджер плагинов в браузере, чтобы наглядно просматривать и управлять плагинами:

**Адрес по умолчанию:** [http://localhost:13000/admin/settings/plugin-manager](http://localhost:13000/admin/settings/plugin-manager)

![Менеджер плагинов](https://static-docs.nocobase.com/20251030195350.png)