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

क्विक स्टार्ट

Plugin डेवलपमेंट अवलोकन
अपना पहला Plugin लिखें
प्रोजेक्ट डायरेक्टरी स्ट्रक्चर

सर्वर-साइड डेवलपमेंट

अवलोकन
Plugin
कलेक्शन डेटा टेबल
डेटाबेस ऑपरेशन
DataSourceManager डेटा सोर्स प्रबंधन
ResourceManager रिसोर्स प्रबंधन
ACL परमिशन कंट्रोल
Middleware
Cache
Event
Context रिक्वेस्ट कॉन्टेक्स्ट
माइग्रेशन अपग्रेड स्क्रिप्ट
Logger
Telemetry
I18n इंटरनेशनलाइजेशन
Command लाइन
CronJobManager शेड्यूल्ड टास्क प्रबंधन
Test

क्लाइंट-साइड डेवलपमेंट

अवलोकन
Plugin
Context
Router
ACL परमिशन कंट्रोल
DataSourceManager डेटा सोर्स प्रबंधन
Resource
Request
Styles & Themes
Logger
I18n इंटरनेशनलाइजेशन
Test

अन्य

Plugin अपग्रेड गाइड
भाषा सूची
डिपेंडेंसी प्रबंधन
बिल्ड
Previous PageI18n इंटरनेशनलाइजेशन
Next PageCronJobManager शेड्यूल्ड टास्क प्रबंधन
TIP

यह दस्तावेज़ AI द्वारा अनुवादित किया गया है। किसी भी अशुद्धि के लिए, कृपया अंग्रेजी संस्करण देखें

#कमांड (Command)

NocoBase में, कमांड का इस्तेमाल कमांड लाइन के ज़रिए एप्लिकेशन या प्लगइन से जुड़े ऑपरेशंस को चलाने के लिए किया जाता है। इनमें सिस्टम टास्क चलाना, माइग्रेशन या सिंक ऑपरेशंस करना, कॉन्फ़िगरेशन को इनिशियलाइज़ करना या चल रहे एप्लिकेशन इंस्टेंस के साथ इंटरैक्ट करना शामिल है। डेवलपर्स प्लगइन के लिए कस्टम कमांड परिभाषित कर सकते हैं और उन्हें app ऑब्जेक्ट के ज़रिए रजिस्टर कर सकते हैं, जिन्हें CLI में nocobase <command> के रूप में चलाया जाता है।

#कमांड के प्रकार

NocoBase में, कमांड को रजिस्टर करने के दो मुख्य तरीके हैं:

प्रकाररजिस्ट्रेशन का तरीकाक्या प्लगइन को सक्षम करना ज़रूरी है?सामान्य उपयोग के मामले
डायनामिक कमांडapp.command()✅ हाँप्लगइन के व्यावसायिक कार्यों से संबंधित कमांड
स्टैटिक कमांडApplication.registerStaticCommand()❌ नहींइंस्टॉलेशन, इनिशियलाइज़ेशन, रखरखाव से संबंधित कमांड

#डायनामिक कमांड

app.command() का उपयोग करके प्लगइन कमांड को परिभाषित किया जाता है। ये कमांड तभी चलाए जा सकते हैं जब प्लगइन सक्षम हो। कमांड फ़ाइलें प्लगइन डायरेक्टरी के अंदर src/server/commands/*.ts में होनी चाहिए।

उदाहरण

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

विवरण

  • app.command('echo'): echo नाम का एक कमांड परिभाषित करता है।
  • .option('-v, --version'): कमांड में एक विकल्प जोड़ता है।
  • .action(): कमांड के निष्पादन तर्क (execution logic) को परिभाषित करता है।
  • app.version.get(): वर्तमान एप्लिकेशन का संस्करण प्राप्त करता है।

कमांड चलाएँ

nocobase echo
nocobase echo -v

#स्टैटिक कमांड

Application.registerStaticCommand() का उपयोग करके रजिस्टर किए गए स्टैटिक कमांड को प्लगइन सक्षम किए बिना भी चलाया जा सकता है। ये इंस्टॉलेशन, इनिशियलाइज़ेशन, माइग्रेशन या डीबगिंग जैसे कार्यों के लिए उपयुक्त हैं। इन्हें प्लगइन क्लास के staticImport() मेथड में रजिस्टर किया जाता है।

उदाहरण

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

कमांड चलाएँ

nocobase echo
nocobase echo --version

विवरण

  • Application.registerStaticCommand() एप्लिकेशन के इंस्टेंशिएट होने से पहले कमांड को रजिस्टर करता है।
  • स्टैटिक कमांड का उपयोग आमतौर पर ऐसे वैश्विक कार्यों को निष्पादित करने के लिए किया जाता है जो एप्लिकेशन या प्लगइन की स्थिति से स्वतंत्र होते हैं।

#कमांड API

कमांड ऑब्जेक्ट तीन वैकल्पिक सहायक मेथड प्रदान करते हैं, जिनका उपयोग कमांड के निष्पादन संदर्भ (execution context) को नियंत्रित करने के लिए किया जाता है:

मेथडउद्देश्यउदाहरण
ipc()चल रहे एप्लिकेशन इंस्टेंस के साथ संचार करें (IPC के माध्यम से)app.command('reload').ipc().action()
auth()डेटाबेस कॉन्फ़िगरेशन सही है या नहीं, इसकी पुष्टि करेंapp.command('seed').auth().action()
preload()एप्लिकेशन कॉन्फ़िगरेशन को प्रीलोड करें (app.load() निष्पादित करें)app.command('sync').preload().action()

कॉन्फ़िगरेशन विवरण

  • ipc() डिफ़ॉल्ट रूप से, कमांड एक नए एप्लिकेशन इंस्टेंस में निष्पादित होते हैं। ipc() को सक्षम करने के बाद, कमांड इंटर-प्रोसेस कम्युनिकेशन (IPC) के माध्यम से वर्तमान में चल रहे एप्लिकेशन इंस्टेंस के साथ इंटरैक्ट करते हैं। यह रीयल-टाइम ऑपरेशन कमांड (जैसे कैश रीफ़्रेश करना, सूचनाएं भेजना) के लिए उपयुक्त है।

  • auth() कमांड निष्पादित होने से पहले डेटाबेस कॉन्फ़िगरेशन की उपलब्धता की जाँच करें। यदि डेटाबेस कॉन्फ़िगरेशन गलत है या कनेक्शन विफल हो जाता है, तो कमांड आगे निष्पादित नहीं होगा। इसका उपयोग आमतौर पर डेटाबेस में लिखने या पढ़ने से संबंधित कार्यों के लिए किया जाता है।

  • preload() कमांड निष्पादित करने से पहले एप्लिकेशन कॉन्फ़िगरेशन को प्रीलोड करें, जो app.load() को निष्पादित करने के बराबर है। यह उन कमांड के लिए उपयुक्त है जो कॉन्फ़िगरेशन या प्लगइन संदर्भ पर निर्भर करते हैं।

अधिक API मेथड के लिए, AppCommand देखें।

#सामान्य उदाहरण

डिफ़ॉल्ट डेटा इनिशियलाइज़ करें

app
  .command('init-data')
  .auth()
  .preload()
  .action(async () => {
    const repo = app.db.getRepository('users');
    await repo.create({ values: { username: 'admin' } });
    console.log('Initialized default admin user.');
  });

चल रहे इंस्टेंस के लिए कैश रीलोड करें (IPC मोड)

app
  .command('reload-cache')
  .ipc()
  .action(async () => {
    console.log('Requesting running app to reload cache...');
  });

इंस्टॉलेशन कमांड का स्टैटिक रजिस्ट्रेशन

Application.registerStaticCommand((app) => {
  app
    .command('setup')
    .action(async () => {
      console.log('Setting up NocoBase environment...');
    });
});