logo

एक्स्ट्रा ब्लॉक टाइप्स (EBT) - नया लेआउट बिल्डर अनुभव❗

एक्स्ट्रा ब्लॉक टाइप्स (EBT) - स्टाइलिश, कस्टमाइज़ेबल ब्लॉक टाइप्स: स्लाइडशो, टैब्स, कार्ड्स, एकॉर्डियन्स और कई अन्य। बैकग्राउंड, DOM बॉक्स, जावास्क्रिप्ट प्लगइन्स के लिए बिल्ट-इन सेटिंग्स। आज ही लेआउट बिल्डिंग का भविष्य अनुभव करें।

डेमो EBT मॉड्यूल्स EBT मॉड्यूल्स डाउनलोड करें

❗एक्स्ट्रा पैराग्राफ टाइप्स (EPT) - नया पैराग्राफ्स अनुभव

एक्स्ट्रा पैराग्राफ टाइप्स (EPT) - एनालॉजिकल पैराग्राफ आधारित मॉड्यूल्स का सेट।

डेमो EPT मॉड्यूल्स EPT मॉड्यूल्स डाउनलोड करें

स्क्रॉल
04/10/2025, by Ivan

Menu

कस्टम मॉड्यूल्स के विकास के दौरान कई ऐसे परिदृश्य होते हैं, जिनमें डेवलपर को अपने मॉड्यूल में composer.json फ़ाइल जोड़ने की आवश्यकता होती है। इनमें से कुछ परिदृश्य इस बात पर निर्भर करते हैं कि क्या कस्टम मॉड्यूल drupal.org पर एक प्रोजेक्ट के रूप में समुदाय के लिए साझा किया जाने वाला है।

यदि मॉड्यूल डेवलपर packagist.org पर उपलब्ध किसी PHP लाइब्रेरी का उपयोग करना चाहता है, तो उसे अपने प्रोजेक्ट में composer.json फ़ाइल जोड़नी होगी।

यदि मॉड्यूल drupal.org पर उपलब्ध कराया गया है, उसकी अन्य मॉड्यूल्स पर निर्भरता है और वह इन निर्भरताओं में बदलावों का परीक्षण करना चाहता है (DrupalCI का उपयोग करके विकास प्रक्रिया के हिस्से के रूप में), तो उसके पास एक composer.json होना चाहिए, जो Drupal मॉड्यूल की उन निर्भरताओं को व्यक्त करता है (DrupalCI केवल composer.json के अंदर पैच में निर्भरता परिवर्तनों का पता लगा सकता है, .info या .info.yml फाइलों में नहीं)।

यदि मॉड्यूल डेवलपर अधिक अभिव्यक्तिपूर्ण सीमाएँ (constraints) उपयोग करना चाहता है, जैसे कि caret (^) या tilde (~) ऑपरेटर, तो वे केवल composer.json में संभव हैं। (हालाँकि स्वयं Drupal इन सीमाओं से बाध्य नहीं होगा, लेकिन वे केवल build के समय लागू होंगी, यदि अंतिम उपयोगकर्ता अपनी साइट Composer से बना रहा है।)

यदि मॉड्यूल की कोई निर्भरता नहीं है, या निर्भरताएँ केवल अन्य Drupal मॉड्यूल्स तक सीमित हैं, तो composer.json आवश्यक नहीं है। हालाँकि, composer.json की उपस्थिति का भी कोई नकारात्मक प्रभाव नहीं है।

चाहे डेवलपर के पास composer.json फ़ाइल हो या न हो, उनके Drupal मॉड्यूल की निर्भरताएँ अभी भी उनकी .info.yml फ़ाइलों में व्यक्त की जानी चाहिए, ताकि Drupal यह सुनिश्चित कर सके कि सही मॉड्यूल्स सक्रिय हों।

अपने मॉड्यूल को PHP पैकेज के रूप में परिभाषित करें

PHP समुदाय पैकेज प्रबंधन के लिए Composer का उपयोग करता है; Drupal में भी यही किया जाता है। उदाहरण के लिए, Drupal प्रोजेक्ट «drupal/core» पैकेज पर निर्भर है। «drupal/core» पैकेज का प्रकार «drupal-core» के रूप में परिभाषित किया गया है, ताकि Composer जान सके कि इसके साथ क्या करना है। composer/installers लाइब्रेरी Drupal के लिए कई प्रकार परिभाषित करती है। ये हैं:

  • drupal-module
  • drupal-theme
  • drupal-library
  • drupal-profile
  • drupal-drush

यहाँ एक पूर्ण उदाहरण है कि mobile_detect प्रोजेक्ट composer.json का उपयोग करके बाहरी प्रोजेक्ट mobiledetect/mobiledetectlib पर निर्भरता कैसे व्यक्त करता है:

{
    "name": "drupal/mobile_detect",
    "description": "Mobile_Detect is a lightweight PHP class for detecting mobile devices.",
    "type": "drupal-module",
    "homepage": "https://drupal.org/project/mobile_detect",
    "authors": [
        {
            "name": "Matthew Donadio (mpdonadio)",
            "homepage": "https://www.drupal.org/u/mpdonadio",
            "role": "Maintainer"
        },
        {
            "name": "Darryl Norris (darol100)",
            "email": "admin@darrylnorris.com",
            "homepage": "https://www.drupal.org/u/darol100",
            "role": "Co-maintainer"
        }
    ],
    "support": {
        "issues": "https://drupal.org/project/issues/mobile_detect",
        "irc": "irc://irc.freenode.org/drupal-contribute",
        "source": "https://cgit.drupalcode.org/mobile_detect"
    },
    "license": "GPL-2.0-or-later",
    "minimum-stability": "dev",
    "require": {
        "mobiledetect/mobiledetectlib": "~2.8"
    }
}

अपने पैकेज के नामकरण के लिए आपको Drupal Composer नामकरण सम्मेलन का पालन करना चाहिए।

composer.json में निर्भरताएँ परिभाषित करना

यदि आप चाहें, तो आप अपने मॉड्यूल की बाहरी निर्भरताएँ composer.json में परिभाषित कर सकते हैं। Drupal कोर स्वचालित रूप से इन निर्भरताओं का पता नहीं लगाएगा या उनका प्रबंधन नहीं करेगा। प्रोजेक्ट के composer.json फ़ाइल में परिभाषित निर्भरताओं का उपयोग करने के लिए, आपको निम्नलिखित में से किसी एक रणनीति का पालन करना होगा:

 

Drupal के लिए Composer को एक निर्भरता प्रबंधक के रूप में उपयोग करने के बारे में अधिक जानकारी के लिए देखें: Composer और Drush Make की तुलना.

अन्य Drupal मॉड्यूल्स पर निर्भरता जोड़ना

डिफ़ॉल्ट रूप से Composer केवल Packagist पर प्रकाशित पैकेजों की जाँच करता है जब वह निर्भरताओं को हल करता है। अधिकांश Drupal मॉड्यूल वहाँ प्रकाशित नहीं होते, क्योंकि Drupal का अपना रिपॉजिटरी है। इस कारण से आपको इस तरह की त्रुटि संदेश मिल सकते हैं:

अनुरोधित पैकेज drupal/module किसी भी संस्करण में नहीं मिला, संभवतः पैकेज के नाम में टाइपो है।

आप Composer को Drupal मॉड्यूल्स को packages.drupal.org रिपॉजिटरी में खोजने के लिए बता सकते हैं, निम्नलिखित कमांड चलाकर:

$ composer config repositories.drupal composer https://packages.drupal.org/8

यह कमांड आपके composer.json फ़ाइल में निम्नलिखित सेक्शन जोड़ देगा:

  "repositories": {
    "drupal": {
      "type": "composer",
      "url": "https://packages.drupal.org/8"
    }
  }

Drupal 9 के साथ संगतता

Drupal 9 संगतता के लिए composer.json फ़ाइल आवश्यक नहीं है। Drupal 9 info.yml फ़ाइल के साथ संगत है। यदि आपके प्रोजेक्ट में composer.json फ़ाइल है, तो drupal/core संस्करण संगतता होना Drupal 9 के साथ संगतता के लिए आवश्यक नहीं है। हालाँकि, यदि आपके require सेक्शन में drupal/core के लिए कोई आवश्यकता है, तो यह Drupal 9 के साथ संगत होनी चाहिए।