संगीतकार के साथ मॉड्यूल पुस्तकालय निर्भरता का प्रबंधन


9

मुझे ड्रूपल-कंपोज़र के साथ कस्टम मॉड्यूल में निर्भरता मिली है , मैं कंपोज़र मैनेजर का उपयोग किए बिना अपने कस्टम मॉड्यूल में थर्ड पार्टी लाइब्रेरी कैसे शामिल कर सकता हूं और ड्रुपल 8 पर कंट्रीब्यूट मॉड्यूल कंपोजर निर्भरता कैसे प्रबंधित करें जो मेरे प्रश्न से संबंधित हैं, लेकिन नहीं अब Drupal 8.1 और संगीतकार प्रबंधक के पदावनति के बाद से आवेदन करना प्रतीत होता है ।

इसके अलावा लोकप्रिय गाइड जैसे डी 8 और संगीतकार का निश्चित परिचय अब लागू नहीं होता है क्योंकि वे संगीतकार प्रबंधक का भी उल्लेख करते हैं।

कंपोज़र मैनेजर का विरोध करने वाला दूसरा समाधान, कोर कंपोज़र को बदल देता है। जेसन फ़ाइल को लगता है कि बहुत अधिक कोर हैकिंग है और शायद ड्रुपल कोर (?) के हर ड्रश अपडेट के साथ टूट जाएगा।

अधिक विशेष रूप से, मैं Drupal 7 से 8 तक के दृश्य vCards को अपडेट करने का प्रयास कर रहा हूं। मैंने अपनी कंपोजर.जॉन फ़ाइल बनाई है जैसे:

{
  "name": "drupal/views_vcards",
  "description": "Allows creation of vCards using the fields provided by the Views module.",
  "type": "drupal-module",
  "license": "GPL-2.0+",
  "homepage": "https://drupal.org/project/views_vcards",
  "require": {
    "maennchen/zipstream-php": "0.3.*"
  }
}

लेकिन अगर मैं अपने मॉड्यूल फ़ोल्डर में कंपोजर.जॉसन फ़ाइल डालता हूं, तो मैं ड्रुपल को कैसे अवगत करा सकता हूं कि वह फाइल वहां मौजूद है, और मैं कैसे सुनिश्चित करूं कि आवश्यक zipstream-phpलाइब्रेरी डाउनलोड हो गई है?

बस composer updateDrupal रूट से चलने से Drupal निर्भरता का एक बहुत अद्यतन होता है, लेकिन इसमें कंपोज़र.json फ़ाइलें शामिल नहीं होती हैं जो मॉड्यूल फ़ोल्डर्स में होती हैं। मैं यह भी नहीं मानता कि मुझे composer installनिर्भरता वाले सभी मॉड्यूल के अंदर से कॉल करना चाहिए ।

मैं संगीतकार प्रबंधक और / या हैकिंग कोर का उपयोग किए बिना एक मॉड्यूल की निर्भरता के बारे में ड्रुपल को कैसे अवगत करा सकता हूं?

अपडेट करें:

संगीतकार मर्ज कोर द्वारा इस्तेमाल किया प्लग इन एक वाइल्डकार्ड पथ का समर्थन है प्रकट होता है:

{
    "require": {
        "wikimedia/composer-merge-plugin": "dev-master"
    },
    "extra": {
        "merge-plugin": {
            "include": [
                "composer.local.json",
                "extensions/*/composer.json" // < ---- THIS LINE
            ],
            "require": [
                "submodule/composer.json"
            ],
            "recurse": true,
            "replace": false,
            "merge-dev": true,
            "merge-extra": false
        }
    }
}

कोर मर्ज क्यों नहीं modules/*/composer.jsonहोता है, जो सब कुछ ठीक कर देगा?

अपडेट 2:

इसका समर्थन न करने का तर्क इस मुद्दे में शामिल है (जो पिछले कुछ समय से शांत भी है)।


1
मुख्य कंपोजर फाइल को एडिट करना सही तरीका है।
इयल

यदि आप संगीतकार को अपनी सभी निर्भरताओं (कोर शामिल) का प्रबंधन करने देते हैं, तो आपका मुद्दा गायब हो जाएगा। देखें packagist.org/packages/drupal/core
ईयाल

: यहाँ एक उदाहरण संगीतकार फ़ाइल मैं एक और सवाल के लिए लिखा है drupal.stackexchange.com/a/187097/40011
ईयाल

उत्तर के लिए धन्यवाद @ ईयाल। तो composer.jsonफ़ाइल के माध्यम से सभी कंट्रिब मॉड्यूल का प्रबंधन करना नया अनुशंसित तरीका है और मॉड्यूल को डाउनलोड करने और स्थापित करने के लिए ड्रश किया जा रहा है? जाहिर है कि संगीतकार स्वचालित रूप से नेस्टेड निर्भरता को हल करेगा और वास्तव में मेरी निर्भरता भी डाउनलोड करेगा।
नेग्राफ 734

जवाबों:


6

महान लचीलेपन के लिए ड्रुपल-मचान का उपयोग करके नई विधि

Drupal के लिए 8.4.0 और ड्रश> 9.0.0 का उपयोग करके अधिक से अधिक , ड्रश मेक को हटा दिया जाता है और आपको drupal.org दस्तावेज़ीकरण लिंक में विस्तृत के रूप में एक पूर्ण-संगीतकार काम प्रवाह का उपयोग करना चाहिए। वे लिंक कंपोज़र प्रोजेक्ट का उपयोग करने की सलाह देते हैं, लेकिन यह हर किसी के वेब सर्वर सेटअप के लिए काम नहीं कर सकता है। निम्नलिखित विस्तार से स्पष्टीकरण के लिए मैन्युअल रूप से कंपोजर.जॉन को सेटअप करने के लिए चरण-दर-चरण है। मैन्युअल रूप से मॉड्यूल जोड़ने के बारे में निर्देश अभी भी किया जा सकता है।

# Initialize composer. Stability alpha is important for custom modules that may be source managed outside of packagist or drupal.org
composer init --name myvendor/mysite --stability=alpha --license=GPLv2
composer config repositories.drupal composer https://packages.drupal.org/8
composer config discard-changes true

फिर आपको अपनी प्राथमिकताओं के आधार पर कंपोज़र.जॉन को मैन्युअल रूप से जोड़ना होगा क्योंकि संगीतकार के साथ ऐसा करने का कोई तरीका नहीं है। ये आपके मॉड्यूल को स्थापित करने के लिए ड्रुपल-मचान को कॉन्फ़िगर करेंगे जहां आप उन्हें चाहते हैं (जैसा कि विक्रेता / या किसी अन्य डेवलपर द्वारा चुनी गई निर्देशिका के विपरीत)। 'Webroot' को 'www' या 'public' में बदलें या आपका होस्ट क्या है।

    "extra": {
        "installer-paths": {
            "webroot/core": ["type:drupal-core"],
            "webroot/modules/contrib/{$name}": ["type:drupal-module"],
            "webroot/modules/custom/{$name}": ["type:drupal-custom-module"],
            "webroot/themes/contrib/{$name}": ["type:drupal-theme"],
            "webroot/themes/custom/{$name}": ["type:drupal-custom-theme"],
            "webroot/profiles/{$name}": ["type:drupal-profile"],
            "webroot/libraries/{$name}": ["type:drupal-library"]
        },
        "patches": {}
    },
    "scripts": {
        "drupal-scaffold": "DrupalComposer\\DrupalScaffold\\Plugin::scaffold"
    }

अब आप कुछ निर्भरताएं स्थापित कर सकते हैं। ध्यान दें कि संगीतकार को काम करने के लिए स्क्रिप्ट और प्लगइन्स का उपयोग करने में सक्षम होना चाहिए।

composer require composer/installers:^1.4.0 drupal-composer/drupal-scaffold:^2.3.0 cweagans/composer-patches:^1.6.2

एक बार (या अपने बिल्ड सर्वर पर आवश्यकतानुसार) ड्रुपल-मचान स्क्रिप्ट चलाएँ:

composer drupal-scaffold

ड्रुपल-मर्ज-प्लगइन के बिना ड्रुपल कोर, मॉड्यूल, थीम आदि ... नीचे दिए गए निर्देशों के अनुसार इंस्टॉल किए जा सकते हैं।

composer require drupal/core:~8.5.1 drupal/views_vcards

ड्रुपल-मर्ज-प्लगइन या सीधे कोर के साथ काम करने का पुराना तरीका

Drupal 8.1.0 और अधिक के लिए, आप सीधे Drupal मॉड्यूल की आवश्यकता के लिए संगीतकार का उपयोग कर सकते हैं। Drupal.org के माध्यम से Drupal के माध्यम से Drupal के संकुल को स्थापित करने के लिए संगीतकार का उपयोग करके और Drupal.org के माध्यम से संगीतकार पैकेज का उपयोग करके प्रलेखन को अद्यतन किया गया है। मुझे लगता है कि यह पहले से ही एक तैनाती परिदृश्य में अच्छी तरह से काम करता है।

composer config repositories.drupal composer https://packages.drupal.org/8
composer require drupal/views_vcards

विकास के लिए, मुझे लगता है कि मैन्युअल रूप से composer requireकाम के साथ निर्भरता में जोड़ना ठीक है। मर्ज अप्रोच ड्रूपल-मर्ज-प्लगइन के साथ भी काम करता है और मैं इसका उपयोग अपने ड्रश मेक फ्लो के लिए करता हूं।

composer config repositories.drupal composer https://packages.drupal.org/8
composer require mile23/drupal-merge-plugin
composer update

अपडेट 2016.06.22

मैं ड्रश मेक का उपयोग कर एक मुद्दे पर भागा, जिसमें पारंपरिक ड्रुपल वर्जन टैग और drupal.org पैकगिस्ट URL को सेवर का उपयोग करके जोड़ा गया। उस अंत तक, मुझे https://packagist.drupal-composer.org पर स्टैबलर पैकगिस्ट का उपयोग करने के लिए स्विच करने की आवश्यकता थी , जो अभी भी पारंपरिक ड्रुपल संस्करण टैग का समर्थन करता है।

यह भी ध्यान दें कि बिल्ड सर्वर या मशीन को कंपोज़र अपडेट (या आवश्यकता) करने के लिए अत्यधिक मात्रा में मेमोरी की आवश्यकता होती है, जो सभी परिदृश्यों में आवश्यक है जहाँ एक समान डेवलपमेंट मशीन पर कंपोज़र अपडेट चलाना आपकी बिल्ड प्रक्रिया में संभव नहीं है।

अपडेट 2016.09.23

अपडेट 2018.03.30

  • अप वोट नहीं देखा। यह काफी पुराना है इसलिए हाल के विकास के बारे में स्पष्ट करने का निर्णय लिया गया है और आपकी साइट को सीधे संगीतकार के साथ स्थापित करना है क्योंकि ड्रू मेक थोड़ी देर के लिए (उदास) पदावनत किया गया है।

1
मैं अभी भी मॉड्यूल डाउनलोड करने और स्थापित करने के लिए ड्रश का उपयोग करने के लिए बहुत अभ्यस्त हूं, लेकिन यह पूरी तरह से संगीतकार के साथ बदल दिया जाएगा?
नियोग 734

यह है कि ड्रुपाल्सी अब कैसे कर रहा है, लेकिन इससे पहले, आप सीधे मर्ज प्लगइन का उपयोग कर सकते हैं। शराबीपन के लिए मैंने जो पैच लिखा था, वह शुरू में drupal.org/files/issues/2597778-composer-contrib-18.patch था । यह प्रतिबद्ध था, लेकिन अब कोड आधार में नहीं है क्योंकि यह पैकगिस्ट का उपयोग करने और संगीतकार आईरिस से सब कुछ करने के लिए सरल है। मैं निम्नलिखित ट्रैविससी के साथ भी करता हूं: cgit.drupalcode.org/xero/tree/.travis.yml#440 । यह आपके कार्य प्रवाह पर निर्भर करेगा।
मर्डक्लिफ

हो सकता है कि कम्पोजर के साथ 3-पार्टी लाइब्रेरी के लिए यहां एसेट पैकैगिस्ट के बारे में एक ब्लर्ब जोड़ने के लायक हो। इस पद्धति को कई ड्रुपल डिस्ट्रोस द्वारा अपनाया जा रहा है और कई कंट्राब मॉड्यूल अब इसका उपयोग भी कर रहे हैं। मैंने इस समाधान को आधिकारिक करने के लिए कुछ योगदान दिया है drupal.org/docs/develop/use-composer/… और drupal.org/docs/develop/use-composer/…
JamesWilson
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.