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

Быстрый старт

Обзор разработки плагинов
Создание первого плагина
Структура каталогов проекта

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

Обзор
Плагин
Коллекции (таблицы данных)
Операции с базой данных
Управление источниками данных (DataSourceManager)
Управление ресурсами (ResourceManager)
Контроль доступа (ACL)
Промежуточное ПО (Middleware)
Кэш
Событие
Контекст запроса
Миграции
Логгер
Интернационализация (I18n)
Командная строка
Управление задачами Cron (CronJobManager)
Тестирование

Клиентская разработка

Обзор
Плагин
Контекст
Маршрутизатор
Контроль доступа (ACL)
Управление источниками данных (DataSourceManager)
Ресурс
Запрос
Стили и темы
Логгер
Интернационализация (I18n)
Тестирование

Прочее

Руководство по обновлению плагинов
Список языков
Управление зависимостями
Сборка
Previous PageСписок языков
Next PageСборка
Уведомление о переводе ИИ

Эта документация была автоматически переведена ИИ.

#Управление зависимостями

При разработке плагинов NocoBase зависимости делятся на две категории: зависимости плагина и глобальные зависимости.

  • Глобальные зависимости: Предоставляются @nocobase/server и @nocobase/client, плагинам не требуется упаковывать их отдельно.
  • Зависимости плагина: Уникальные зависимости плагина (включая серверные зависимости) будут упакованы в артефакты плагина.

#Принципы разработки

Поскольку зависимости плагина будут упакованы в его артефакты (включая серверные зависимости, которые будут упакованы в dist/node_modules), при разработке плагинов вы можете объявлять все зависимости в devDependencies, а не в dependencies. Это позволяет избежать различий между средами разработки и продакшена.

Когда плагину требуется установить следующие зависимости, убедитесь, что номер версии совпадает с глобальными зависимостями @nocobase/server и @nocobase/client, иначе могут возникнуть конфликты во время выполнения.

#Глобальные зависимости

Следующие зависимости предоставляются NocoBase и не требуют упаковки в плагины. Если они вам действительно необходимы, их версии должны соответствовать версии фреймворка.

// Ядро NocoBase
'@nocobase/acl',
'@nocobase/actions',
'@nocobase/auth',
'@nocobase/cache',
'@nocobase/client',
'@nocobase/database',
'@nocobase/evaluators',
'@nocobase/logger',
'@nocobase/resourcer',
'@nocobase/sdk',
'@nocobase/server',
'@nocobase/test',
'@nocobase/utils',

// @nocobase/auth
'jsonwebtoken',

// @nocobase/cache
'cache-manager',
'cache-manager-fs-hash',

// @nocobase/database
'sequelize',
'umzug',
'async-mutex',

// @nocobase/evaluators
'@formulajs/formulajs',
'mathjs',

// @nocobase/logger
'winston',
'winston-daily-rotate-file',

// Экосистема Koa
'koa',
'@koa/cors',
'@koa/router',
'multer',
'@koa/multer',
'koa-bodyparser',
'koa-static',
'koa-send',

// Экосистема React
'react',
'react-dom',
'react/jsx-runtime',

// React Router
'react-router',
'react-router-dom',

// Ant Design
'antd',
'antd-style',
'@ant-design/icons',
'@ant-design/cssinjs',

// i18n
'i18next',
'react-i18next',

// dnd-kit
'@dnd-kit/accessibility',
'@dnd-kit/core',
'@dnd-kit/modifiers',
'@dnd-kit/sortable',
'@dnd-kit/utilities',

// Formily
'@formily/antd-v5',
'@formily/core',
'@formily/react',
'@formily/json-schema',
'@formily/path',
'@formily/validator',
'@formily/shared',
'@formily/reactive',
'@formily/reactive-react',

// Общие утилиты
'dayjs',
'mysql2',
'pg',
'pg-hstore',
'supertest',
'axios',
'@emotion/css',
'ahooks',
'lodash',

#Рекомендации по разработке

  1. Поддерживайте согласованность зависимостей
    Если вам необходимо использовать пакеты, которые уже существуют в глобальных зависимостях, избегайте установки других версий и используйте глобальные зависимости напрямую.

  2. Минимизируйте размер сборки
    Для распространённых UI-библиотек (таких как antd), утилит (например, lodash) и драйверов баз данных (например, pg, mysql2) следует использовать глобально предоставляемые версии, чтобы избежать дублирующей упаковки.

  3. Согласованность сред отладки и продакшена
    Использование devDependencies обеспечивает согласованность между средой разработки и конечными артефактами, предотвращая различия в окружении, вызванные некорректной конфигурацией dependencies и peerDependencies.