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

Inicio rápido

Resumen de desarrollo de plugins
Escribir el primer plugin
Estructura de directorios del proyecto

Desarrollo del lado del servidor

Visión general
Plugin
Colecciones
Operaciones de base de datos
Gestión de fuentes de datos
Gestión de recursos
Control de permisos (ACL)
Middleware
Caché
Evento
Contexto de solicitud
Migración (Script de actualización)
Registro (Logger)
Internacionalización (I18n)
Línea de comandos (Command)
Gestión de tareas programadas
Pruebas

Desarrollo del lado del cliente

Visión general
Plugin
Contexto
Enrutador (Router)
Control de permisos (ACL)
Gestión de fuentes de datos
Recurso
Solicitud
Estilos y temas
Registro (Logger)
Internacionalización (I18n)
Pruebas

Otros

Guía de actualización de plugins
Lista de idiomas
Gestión de dependencias
Compilación
Previous PageLista de idiomas
Next PageCompilación
Aviso de traducción por IA

Esta documentación ha sido traducida automáticamente por IA.

#Gestión de Dependencias

En el desarrollo de plugins para NocoBase, las dependencias se dividen en dos categorías: dependencias del plugin y dependencias globales.

  • Dependencias globales: Son proporcionadas por @nocobase/server y @nocobase/client, por lo que los plugins no necesitan empaquetarlas por separado.
  • Dependencias del plugin: Son las dependencias exclusivas del plugin (incluidas las dependencias del lado del servidor) y se empaquetarán junto con los artefactos del plugin.

#Principios de Desarrollo

Dado que las dependencias de un plugin se empaquetarán junto con sus artefactos (incluidas las dependencias del servidor, que se empaquetarán en dist/node_modules), le recomendamos que declare todas las dependencias en devDependencies en lugar de dependencies durante el desarrollo del plugin. Esto ayuda a evitar diferencias entre los entornos de desarrollo y producción.

Cuando un plugin necesite instalar las siguientes dependencias, asegúrese de que el número de versión coincida con las dependencias globales de @nocobase/server y @nocobase/client. De lo contrario, podrían producirse conflictos en tiempo de ejecución.

#Dependencias Globales

Las siguientes dependencias son proporcionadas por NocoBase y no necesitan ser empaquetadas en los plugins. Si fuera necesario utilizarlas, sus versiones deben coincidir con la versión del framework.

// Núcleo de 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',

// Ecosistema de Koa
'koa',
'@koa/cors',
'@koa/router',
'multer',
'@koa/multer',
'koa-bodyparser',
'koa-static',
'koa-send',

// Ecosistema de 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',

// Utilidades comunes
'dayjs',
'mysql2',
'pg',
'pg-hstore',
'supertest',
'axios',
'@emotion/css',
'ahooks',
'lodash',

#Recomendaciones de Desarrollo

  1. Mantenga la consistencia de las dependencias
    Si necesita utilizar paquetes que ya existen en las dependencias globales, evite instalar versiones diferentes y utilice directamente las dependencias globales.

  2. Minimice el tamaño del paquete
    Para las librerías de UI comunes (como antd), librerías de utilidades (como lodash) y controladores de bases de datos (como pg, mysql2), le recomendamos que dependa de las versiones proporcionadas globalmente para evitar el empaquetado duplicado.

  3. Consistencia entre entornos de depuración y producción
    El uso de devDependencies garantiza la consistencia entre el desarrollo y los artefactos finales, evitando diferencias en el entorno causadas por una configuración incorrecta de dependencies y peerDependencies.