2016-06-10 6 views
6

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

मानक वर्डप्रेस प्लगइन्स जैसे "वर्डप्रेस.com द्वारा जेटपैक" के लिए यह ठीक है क्योंकि हम https://wpackagist.org/ का उपयोग करेंगे। हालांकि प्रीमियम में प्लगइन और कस्टम किए गए लोगों के लिए भुगतान किए गए प्रीमियम के लिए जो खुले नहीं जा सकते हैं, हम उन्हें एक निजी संगीतकार रिपोजिटरी में होस्ट करना चाहते हैं।

क्योंकि हमारे पास इन प्लगइन के कई संस्करण होंगे, मैं सभी संस्करणों को 1.1, 1.2, 1.3 जैसे दिखाना चाहूंगा ताकि डेवलपर composer.json में निर्दिष्ट कर सके जो संस्करण आवश्यक है, उदा। यदि भविष्य का संस्करण कुछ तोड़ देता है और हमें पिछले संस्करण में रोलबैक करने की आवश्यकता है।

मैंने एक साटिस निजी भंडार स्थापित करने की मूल बातें पढ़ी हैं जो मैंने किया है लेकिन मैं इसे संस्करणों के गिट टैग के माध्यम से लूप नहीं कर सकता हूं और यह भी निर्दिष्ट करता हूं कि यह एक वर्डप्रेस प्लगइन है और इसे सही में इंस्टॉल करें स्थान।

यह मेरा पहला प्रयास था, जिसमें यह हो जाता है टैग किए गए संस्करणों सभी Git:

{ 
    "name": "Private Repository", 
    "homepage": "http://packages.privaterepo.com", 
    "repositories": [ 
     { 
      "type": "vcs", 
      "url": "[email protected]:companyname/project.git" 
     } 
    ], 
    "require-all": true 
} 

और यह एक है जहाँ मैं संस्करण निर्दिष्ट लेकिन यह प्लगइन स्थान सही Wordpress में स्थापित करने के लिए प्राप्त करने के लिए है:

{ 
    "name": "Private Repository", 
    "homepage": "http://packages.privaterepo.com", 
    "repositories": [ 
     { 
      "type": "package", 
      "package": { 
       "name": "company/project", 
       "description": "WordPress Plugin", 
       "version": "1.0", 
       "source": { 
        "type": "git", 
        "url": "[email protected]:company/project.git", 
        "reference": "origin/master" 
       }, 
       "type": "wordpress-plugin", 
       "require": { 
        "php": ">=5.3.2", 
        "composer/installers": "*" 
       } 
      } 
     } 
    ], 
    "require-all": true, 
    "require-dependencies": true, 
    "extra": { 
     "installer-paths": { 
      "wp-content/plugins/{$name}/": ["type:wordpress-plugin"] 
     } 
    } 
} 

क्या कोई सलाह दे सकता है कि मैं इन दोनों परिदृश्यों को एक साथ काम करने के लिए कैसे प्राप्त करूं?

+0

मैं आपके साथ बहुत कुछ करता हूं और केवल एक ही अंतर जो मैं देख सकता हूं वह यह है कि मैं आवश्यकता का उपयोग नहीं करता-सब मुझे एक-एक करके आवश्यकता होती है (इसलिए "आवश्यकता": {फिर एक सूची)। यह मेरे लिए ठीक काम करता है और निजी प्लगइन्स wpackagist वाले आदि के साथ स्थापित ... –

+0

कोड का कौन सा संस्करण आप पहले या दूसरे का जिक्र कर रहे हैं? –

+0

क्षमा करें फिल, दूसरा। और स्रोत के तहत संदर्भ के लिए) मैं टैग का उपयोग कर रहा था। –

उत्तर

0

मुझे लगता है कि मेरे पास एक समान सेटअप है: स्थानीय सैटिस रेपो में हमारे पास एक निजी गिट सर्वर से आंतरिक पैकेज और गीथब के सभी बाहरी पैकेज हैं।

चाल दो चरणों को करना है: चरण केवल सभी बाहरी पैकेजों के मेटाडेटा को खींचता है, और यह वह जगह है जहां सब कुछ खींचने से बचने के लिए आपकी संस्करण सीमा खेलती है।

दूसरे चरण के लिए सभी स्थानीय Git रेपोस के माध्यम से स्कैन करेगा और सभी संस्करणों का पता लगाने, और इसके अलावा चरण में बनाए गए संगीतकार रेपो जोड़ देगा 1.

प्रभावी रूप से आप दो Satis विन्यास कि पैदा करेगा दो परिणाम के साथ सौदा होगा, और बाहरी पैकेजों के लिए पहली नौकरी के नतीजे केवल सभी मेटाडेटा लाएंगे, और दूसरे चरण में इसे स्थानीय गिट रेपो की तरह आयात और उपयोग किया जाता है, और "सभी" संस्करणों को स्कैन करने और संभवतः ज़िप फ़ाइलों को बनाने के लिए दूसरे चरण को कॉन्फ़िगर करना वे आपको आवश्यक प्रत्येक पैकेज की एक अच्छी स्थानीय बैकअप प्रतिलिपि बनाएंगे।

या दूसरे शब्दों में:

काफ़ी-external.json

{ 
    "repositories": [ 
     { 
      "type":"composer", 
      "url":"https://packagist.org" 
     } 
    ], 
    "require": { 
     "any/package":">=2.0" 
    } 
    "output-html": false, 
    "require-dependencies": true 
} 

भागो यह:

php -dmemory_limit=2G satis/bin/satis build satis-external.json external/ 

काफ़ी-आंतरिक।json

{ 
    "repositories": [ 
     { 
      "type": "composer", 
      "url": "http://url/from/external/above" 
     }, 
     { 
      "type": "vcs", 
      "url": "ssh://internal/gitrepo.git" 
     } 
    ], 
    "require-all": true, 
    "archive": { 
     "directory": "dist", 
     "format": "zip", 
     "prefix-url": "https://whatever/youneed", 
     "skip-dev": true 
    } 
} 

भागो इस

php -dmemory_limit=2G satis/bin/satis build satis-internal.json internal/ 

किसी अन्य भंडार की तरह है कि कार्य कर देगा Satis में एक "प्रकार = संगीतकार" भंडार जोड़ना - विशेष रूप से यदि आप "की आवश्यकता होती है-सभी सभी संकुल वहाँ उल्लेख डाउनलोड करेगा = सच ", इसलिए सावधान रहें कि पैकेजिस्ट या किसी अन्य रेपो को सीधे न जोड़ें।

यह भी ध्यान रखें कि बाहरी आवश्यकताओं के लिए "आवश्यकता-निर्भरता" सत्य है क्योंकि आप संभवतः उन पैकेजों की प्रत्येक निर्भरता को जोड़ने की परेशानी से गुजरना नहीं चाहेंगे जिन्हें आप उपयोग करना चाहते हैं।

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

+0

ओह, बढ़िया: ए -1 वोट जिस पर टिप्पणी नहीं की गई उस उपयोगकर्ता ने क्या मदद नहीं की। – Sven

संबंधित मुद्दे