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 Pageअपना पहला Plugin लिखें
Next Pageअवलोकन
TIP

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

#प्रोजेक्ट संरचना

चाहे आप Git से सोर्स कोड क्लोन करें या create-nocobase-app का उपयोग करके कोई प्रोजेक्ट शुरू करें, NocoBase प्रोजेक्ट मूल रूप से एक Yarn Workspace पर आधारित मल्टी-पैकेज रिपॉजिटरी (monorepo) होता है।

#शीर्ष-स्तरीय डायरेक्टरी का अवलोकन

नीचे दिया गया उदाहरण my-nocobase-app/ को प्रोजेक्ट डायरेक्टरी के रूप में उपयोग करता है। विभिन्न वातावरणों में थोड़ा अंतर हो सकता है:

my-nocobase-app/
├── packages/              # प्रोजेक्ट सोर्स कोड
│   ├── plugins/           # डेवलपमेंट के अधीन प्लगइन (अनकंपाइल किए गए)
├── storage/               # रनटाइम डेटा और गतिशील रूप से जेनरेट की गई सामग्री
│   ├── apps/
│   ├── db/
│   ├── logs/
│   ├── uploads/
│   ├── plugins/           # कंपाइल किए गए प्लगइन (UI के माध्यम से अपलोड किए गए भी)
│   └── tar/               # प्लगइन पैकेज फ़ाइलें (.tar)
├── scripts/               # यूटिलिटी स्क्रिप्ट और टूल कमांड
├── .env*                  # विभिन्न वातावरणों के लिए एनवायरनमेंट वेरिएबल कॉन्फ़िगरेशन
├── lerna.json             # Lerna वर्कस्पेस कॉन्फ़िगरेशन
├── package.json           # रूट पैकेज कॉन्फ़िगरेशन, वर्कस्पेस और स्क्रिप्ट्स को घोषित करता है
├── tsconfig*.json         # टाइपस्क्रिप्ट कॉन्फ़िगरेशन (फ्रंटएंड, बैकएंड, पाथ मैपिंग)
├── vitest.config.mts      # विटेस्ट यूनिट टेस्ट कॉन्फ़िगरेशन
└── playwright.config.ts   # प्लेराइट E2E टेस्ट कॉन्फ़िगरेशन

#packages/ सबडायरेक्टरी का विवरण

packages/ डायरेक्टरी में NocoBase के मुख्य मॉड्यूल और एक्सटेंसिबल पैकेज होते हैं। इसकी सामग्री प्रोजेक्ट के स्रोत पर निर्भर करती है:

  • create-nocobase-app के माध्यम से बनाए गए प्रोजेक्ट: डिफ़ॉल्ट रूप से, इसमें केवल packages/plugins/ शामिल होता है, जिसका उपयोग कस्टम प्लगइन सोर्स कोड को स्टोर करने के लिए किया जाता है। प्रत्येक सबडायरेक्टरी एक स्वतंत्र npm पैकेज है।
  • क्लोन की गई आधिकारिक सोर्स रिपॉजिटरी: आप अधिक सबडायरेक्टरी देख सकते हैं, जैसे core/, plugins/, pro-plugins/, presets/ आदि, जो क्रमशः फ्रेमवर्क कोर, बिल्ट-इन प्लगइन और आधिकारिक प्रीसेट समाधानों के अनुरूप हैं।

किसी भी स्थिति में, packages/plugins कस्टम प्लगइन को डेवलप और डीबग करने के लिए मुख्य स्थान है।

#storage/ रनटाइम डायरेक्टरी

storage/ रनटाइम-जेनरेटेड डेटा और बिल्ड आउटपुट को स्टोर करता है। सामान्य सबडायरेक्टरी का विवरण इस प्रकार है:

  • apps/: मल्टी-ऐप परिदृश्यों के लिए कॉन्फ़िगरेशन और कैश।
  • logs/: रनटाइम लॉग और डीबग आउटपुट।
  • uploads/: उपयोगकर्ता द्वारा अपलोड की गई फ़ाइलें और मीडिया संसाधन।
  • plugins/: UI के माध्यम से अपलोड किए गए या CLI के माध्यम से इम्पोर्ट किए गए पैकेज्ड प्लगइन।
  • tar/: yarn build <plugin> --tar निष्पादित करने के बाद जेनरेट किए गए कंप्रेस्ड प्लगइन पैकेज।

आमतौर पर यह सलाह दी जाती है कि storage डायरेक्टरी को .gitignore में जोड़ा जाए और इसे डिप्लॉयमेंट या बैकअप के दौरान अलग से हैंडल किया जाए।

#एनवायरनमेंट कॉन्फ़िगरेशन और प्रोजेक्ट स्क्रिप्ट्स

  • .env, .env.test, .env.e2e: इनका उपयोग क्रमशः लोकल रनिंग, यूनिट/इंटीग्रेशन टेस्टिंग और एंड-टू-एंड टेस्टिंग के लिए किया जाता है।
  • scripts/: इसमें सामान्य मेंटेनेंस स्क्रिप्ट्स (जैसे डेटाबेस इनिशियलाइज़ेशन, रिलीज़ यूटिलिटीज़ आदि) स्टोर होती हैं।

#प्लगइन लोडिंग पाथ और प्राथमिकता

प्लगइन कई स्थानों पर मौजूद हो सकते हैं। NocoBase शुरू होने पर उन्हें निम्नलिखित प्राथमिकता क्रम में लोड करेगा:

  1. packages/plugins में सोर्स कोड संस्करण (लोकल डेवलपमेंट और डीबगिंग के लिए)।
  2. storage/plugins में पैकेज्ड संस्करण (UI के माध्यम से अपलोड किया गया या CLI के माध्यम से इम्पोर्ट किया गया)।
  3. node_modules में डिपेंडेंसी पैकेज (npm/yarn के माध्यम से इंस्टॉल किए गए या फ्रेमवर्क में बिल्ट-इन)।

जब एक ही नाम का प्लगइन सोर्स डायरेक्टरी और पैकेज्ड डायरेक्टरी दोनों में मौजूद होता है, तो सिस्टम सोर्स संस्करण को प्राथमिकता देगा, जिससे लोकल ओवरराइड और डीबगिंग में आसानी होगी।

#प्लगइन डायरेक्टरी टेम्पलेट

CLI का उपयोग करके एक प्लगइन बनाएँ:

yarn pm create @my-project/plugin-hello

जेनरेटेड डायरेक्टरी संरचना इस प्रकार है:

packages/plugins/@my-project/plugin-hello/
├── dist/                    # बिल्ड आउटपुट (आवश्यकतानुसार जेनरेट किया गया)
├── src/                     # सोर्स कोड डायरेक्टरी
│   ├── client/              # फ्रंटएंड कोड (ब्लॉक, पेज, मॉडल आदि)
│   │   ├── plugin.ts        # क्लाइंट-साइड प्लगइन मुख्य क्लास
│   │   └── index.ts         # क्लाइंट-साइड एंट्री
│   ├── locale/              # बहु-भाषा संसाधन (फ्रंटएंड और बैकएंड के बीच साझा)
│   ├── swagger/             # OpenAPI/Swagger डॉक्यूमेंटेशन
│   └── server/              # सर्वर-साइड कोड
│       ├── collections/     # संग्रह परिभाषाएँ
│       ├── commands/        # कस्टम कमांड
│       ├── migrations/      # डेटाबेस माइग्रेशन स्क्रिप्ट्स
│       ├── plugin.ts        # सर्वर-साइड प्लगइन मुख्य क्लास
│       └── index.ts         # सर्वर-साइड एंट्री
├── index.ts                 # फ्रंटएंड और बैकएंड ब्रिज एक्सपोर्ट
├── client.d.ts              # फ्रंटएंड टाइप डिक्लेरेशन
├── client.js                # फ्रंटएंड बिल्ड आर्टिफैक्ट
├── server.d.ts              # सर्वर-साइड टाइप डिक्लेरेशन
├── server.js                # सर्वर-साइड बिल्ड आर्टिफैक्ट
├── .npmignore               # पब्लिश इग्नोर कॉन्फ़िगरेशन
└── package.json

बिल्ड पूरा होने के बाद, dist/ डायरेक्टरी और client.js, server.js फ़ाइलें प्लगइन सक्षम होने पर लोड हो जाएँगी। डेवलपमेंट के दौरान, आपको केवल src/ डायरेक्टरी को संशोधित करने की आवश्यकता है। पब्लिश करने से पहले, yarn build <plugin> या yarn build <plugin> --tar निष्पादित करें।