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 PageI18n (Internacionalização)
Next PageCronJobManager (Gerenciamento de tarefas agendadas)
Aviso de tradução por IA

Esta documentação foi traduzida automaticamente por IA.

#Comandos

No NocoBase, os comandos são usados para executar operações relacionadas a aplicativos ou plugins na linha de comando, como rodar tarefas do sistema, executar operações de migração ou sincronização, inicializar configurações, ou interagir com instâncias de aplicativos em execução. Desenvolvedores podem definir comandos personalizados para plugins e registrá-los através do objeto app, executando-os na CLI como nocobase <command>.

#Tipos de Comandos

No NocoBase, o registro de comandos é dividido em dois tipos:

TipoMétodo de RegistroO Plugin Precisa Estar Habilitado?Cenários Típicos
Comando Dinâmicoapp.command()✅ SimComandos relacionados à lógica de negócio do plugin
Comando EstáticoApplication.registerStaticCommand()❌ NãoComandos de instalação, inicialização e manutenção

#Comandos Dinâmicos

Use app.command() para definir comandos de plugins. Os comandos só podem ser executados depois que o plugin estiver habilitado. Os arquivos de comando devem ser colocados em src/server/commands/*.ts dentro do diretório do plugin.

Exemplo

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());
      }
    });
}

Descrição

  • app.command('echo'): Define um comando chamado echo.
  • .option('-v, --version'): Adiciona uma opção ao comando.
  • .action(): Define a lógica de execução do comando.
  • app.version.get(): Obtém a versão atual do aplicativo.

Executar Comando

nocobase echo
nocobase echo -v

#Comandos Estáticos

Use Application.registerStaticCommand() para registrar. Os comandos estáticos podem ser executados sem a necessidade de habilitar os plugins, sendo ideais para tarefas de instalação, inicialização, migração ou depuração. Registre-os no método staticImport() da classe do plugin.

Exemplo

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());
          }
        });
    });
  }
}

Executar Comando

nocobase echo
nocobase echo --version

Descrição

  • Application.registerStaticCommand() registra os comandos antes que o aplicativo seja instanciado.
  • Comandos estáticos são geralmente usados para executar tarefas globais que não dependem do estado do aplicativo ou do plugin.

#API de Comandos

Os objetos de comando fornecem três métodos auxiliares opcionais para controlar o contexto de execução do comando:

MétodoPropósitoExemplo
ipc()Comunica-se com instâncias de aplicativos em execução (via IPC)app.command('reload').ipc().action()
auth()Verifica se a configuração do banco de dados está corretaapp.command('seed').auth().action()
preload()Pré-carrega a configuração do aplicativo (executa app.load())app.command('sync').preload().action()

Descrição da Configuração

  • ipc()
    Por padrão, os comandos são executados em uma nova instância do aplicativo.
    Após habilitar ipc(), os comandos interagem com a instância do aplicativo atualmente em execução através de comunicação entre processos (IPC), sendo adequados para comandos de operação em tempo real (como atualizar cache, enviar notificações).

  • auth()
    Verifica se a configuração do banco de dados está disponível antes da execução do comando.
    Se a configuração do banco de dados estiver incorreta ou a conexão falhar, o comando não continuará. É comumente usado para tarefas que envolvem escrita ou leitura no banco de dados.

  • preload()
    Pré-carrega a configuração do aplicativo antes de executar o comando, o que é equivalente a executar app.load().
    É adequado para comandos que dependem da configuração ou do contexto do plugin.

Para mais métodos da API, consulte AppCommand.

#Exemplos Comuns

Inicializar Dados Padrão

app
  .command('init-data')
  .auth()
  .preload()
  .action(async () => {
    const repo = app.db.getRepository('users');
    await repo.create({ values: { username: 'admin' } });
    console.log('Usuário admin padrão inicializado.');
  });

Recarregar Cache para Instância em Execução (Modo IPC)

app
  .command('reload-cache')
  .ipc()
  .action(async () => {
    console.log('Solicitando que o aplicativo em execução recarregue o cache...');
  });

Registro Estático de Comando de Instalação

Application.registerStaticCommand((app) => {
  app
    .command('setup')
    .action(async () => {
      console.log('Configurando o ambiente NocoBase...');
    });
});