logologo
Começar
Manual
Desenvolvimento
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
Começar
Manual
Desenvolvimento
Plugins
API
logologo

Início rápido

Visão geral do desenvolvimento de plugins
Escrever o primeiro plugin
Estrutura de diretórios do projeto

Desenvolvimento do lado do servidor

Visão Geral
Plugin
Collections (Tabelas de dados)
Database (Operações de banco de dados)
DataSourceManager (Gerenciamento de fontes de dados)
ResourceManager (Gerenciamento de recursos)
ACL (Controle de acesso)
Middleware
Cache
Event (Evento)
Context (Contexto da requisição)
Migration (Script de atualização)
Logger (Log)
I18n (Internacionalização)
Command (Linha de comando)
CronJobManager (Gerenciamento de tarefas agendadas)
Test (Teste)

Desenvolvimento do lado do cliente

Visão Geral
Plugin
Context (Contexto)
Router (Rotas)
ACL (Controle de acesso)
DataSourceManager (Gerenciamento de fontes de dados)
Resource (Recurso)
Request (Requisição)
Estilos e temas
Logger (Log)
I18n (Internacionalização)
Test (Teste)

Outros

Guia de atualização de plugins
Lista de idiomas
Gerenciamento de dependências
Build
Previous PageEscrever o primeiro plugin
Next PageVisão Geral
Aviso de tradução por IA

Esta documentação foi traduzida automaticamente por IA.

#Estrutura do Projeto

Seja ao clonar o código-fonte do Git ou ao inicializar um projeto com create-nocobase-app, o projeto NocoBase gerado é, essencialmente, um monorepo baseado em Yarn Workspace.

#Visão Geral do Diretório Raiz

O exemplo a seguir usa my-nocobase-app/ como diretório do projeto. Pode haver pequenas diferenças em ambientes distintos:

my-nocobase-app/
├── packages/              # Código-fonte do projeto
│   ├── plugins/           # Plugins em desenvolvimento (não compilados)
├── storage/               # Dados de tempo de execução e conteúdo gerado dinamicamente
│   ├── apps/
│   ├── db/
│   ├── logs/
│   ├── uploads/
│   ├── plugins/           # Plugins compilados (incluindo aqueles enviados pela interface)
│   └── tar/               # Arquivos de pacote de plugins (.tar)
├── scripts/               # Scripts de utilidade e comandos de ferramenta
├── .env*                  # Configurações de variáveis de ambiente para diferentes ambientes
├── lerna.json             # Configuração do workspace Lerna
├── package.json           # Configuração do pacote raiz, declara o workspace e scripts
├── tsconfig*.json         # Configurações TypeScript (frontend, backend, mapeamento de caminhos)
├── vitest.config.mts      # Configuração de testes de unidade Vitest
└── playwright.config.ts   # Configuração de testes E2E Playwright

#Descrição do Subdiretório packages/

O diretório packages/ contém os módulos principais do NocoBase e pacotes extensíveis. O conteúdo depende da origem do projeto:

  • Projetos criados via create-nocobase-app: Por padrão, incluem apenas packages/plugins/, usado para armazenar o código-fonte de plugins personalizados. Cada subdiretório é um pacote npm independente.
  • Repositório de código-fonte oficial clonado: Você verá mais subdiretórios, como core/, plugins/, pro-plugins/, presets/, etc., que correspondem ao núcleo do framework, plugins integrados e soluções predefinidas oficiais.

Em qualquer um dos casos, packages/plugins é o local principal para desenvolver e depurar plugins personalizados.

#Diretório de Tempo de Execução storage/

O diretório storage/ armazena dados gerados em tempo de execução e saídas de build. As descrições dos subdiretórios comuns são as seguintes:

  • apps/: Configuração e cache para cenários de múltiplas aplicações.
  • logs/: Logs de tempo de execução e saída de depuração.
  • uploads/: Arquivos e recursos de mídia enviados pelos usuários.
  • plugins/: Plugins empacotados enviados pela interface do usuário ou importados via CLI.
  • tar/: Pacotes de plugins compactados gerados após a execução de yarn build <plugin> --tar.

Geralmente, é recomendado adicionar o diretório storage ao .gitignore e tratá-lo separadamente durante a implantação ou backup.

#Configuração de Ambiente e Scripts do Projeto

  • .env, .env.test, .env.e2e: Usados para execução local, testes de unidade/integração e testes end-to-end, respectivamente.
  • scripts/: Armazena scripts de manutenção comuns (como inicialização de banco de dados, utilitários de lançamento, etc.).

#Caminhos de Carregamento e Prioridade de Plugins

Plugins podem existir em vários locais. O NocoBase os carregará na seguinte ordem de prioridade ao iniciar:

  1. Versão do código-fonte em packages/plugins (para desenvolvimento e depuração local).
  2. Versão empacotada em storage/plugins (enviada pela interface do usuário ou importada via CLI).
  3. Pacotes de dependência em node_modules (instalados via npm/yarn ou integrados ao framework).

Quando um plugin com o mesmo nome existe tanto no diretório de código-fonte quanto no diretório empacotado, o sistema priorizará o carregamento da versão do código-fonte, facilitando substituições locais e depuração.

#Modelo de Diretório de Plugin

Crie um plugin usando a CLI:

yarn pm create @my-project/plugin-hello

A estrutura de diretórios gerada é a seguinte:

packages/plugins/@my-project/plugin-hello/
├── dist/                    # Saída de build (gerada conforme necessário)
├── src/                     # Diretório do código-fonte
│   ├── client/              # Código frontend (blocos, páginas, modelos, etc.)
│   │   ├── plugin.ts        # Classe principal do plugin no lado do cliente
│   │   └── index.ts         # Entrada do lado do cliente
│   ├── locale/              # Recursos multilíngues (compartilhados entre frontend e backend)
│   ├── swagger/             # Documentação OpenAPI/Swagger
│   └── server/              # Código backend
│       ├── collections/     # Definições de coleções
│       ├── commands/        # Comandos personalizados
│       ├── migrations/      # Scripts de migração de banco de dados
│       ├── plugin.ts        # Classe principal do plugin no lado do servidor
│       └── index.ts         # Entrada do lado do servidor
├── index.ts                 # Exportação de ponte frontend e backend
├── client.d.ts              # Declarações de tipo frontend
├── client.js                # Artefato de build frontend
├── server.d.ts              # Declarações de tipo backend
├── server.js                # Artefato de build backend
├── .npmignore               # Configuração de ignorar na publicação
└── package.json

Após a conclusão do build, o diretório dist/ e os arquivos client.js, server.js serão carregados quando o plugin for habilitado. Durante a fase de desenvolvimento, você só precisa modificar o diretório src/. Antes de publicar, execute yarn build <plugin> ou yarn build <plugin> --tar.