कम्पोज़र इंस्टॉल पथ कैसे निर्दिष्ट करें?


93

मेरी यह परिभाषा है:

{
    "repositories": [
        {
            "type": "package",
            "package": {
                "name": "symfony/sfGuardPlugin",
                "version": "4.0.2",
                "dist": {
                    "url": "http://plugins.symfony-project.org/get/sfGuardPlugin/sfGuardPlugin-4.0.2.tgz",
                    "type": "tar"
                }
            }
        }
    ],
    "require": {
        "symfony/sfGuardPlugin": "4.0.*"
    }
}

मैं सिम्फनी 1 का उपयोग कर रहा हूं, और मैं उन्हें स्थापित करना चाहूंगा plugins/sfGuardPlugin/। मैं इसे कैसे निर्दिष्ट करूं?

जवाबों:


140

ऐसा लगता है कि आप vendorडिर को कुछ और ( pluginsआपके मामले में) परिभाषित कर सकते हैं :

{
    "config": {
        "vendor-dir": "plugins"
    }
}

उसके बाद, आप पैकेज का नाम बदल सकते हैं, जैसा कि एक स्तर के अंदर नहीं होना चाहिए, जैसे:

        "package": {
            "name": "sfGuardPlugin",

तो, आपका composer.jsonइस तरह दिखना चाहिए:

{
    "config": {
        "vendor-dir": "plugins"
    },
    "repositories": [
        {
            "type": "package",
            "package": {
                "name": "sfGuardPlugin",
                "version": "4.0.2",
                "dist": {
                    "url": "http://plugins.symfony-project.org/get/sfGuardPlugin/sfGuardPlugin-4.0.2.tgz",
                    "type": "tar"
                }
            }
        }
    ],
    "require": {
        "sfGuardPlugin": "4.0.*"
    }
}

संपादित करें

इस कॉन्फ़िगरेशन का उपयोग करके, आपको पथ मिलेगा (जो निश्चित रूप से सिम्फनी के लिए अच्छा नहीं है):

plugins / sfGuardPlugin / sfGuardPlugin-4.0.2 /

मुझे इसके साथ एक वर्कअराउंड मिला composer.json:

{
    "config": {
        "vendor-dir": "plugins"
    },
    "repositories": [
        {
            "type": "package",
            "package": {
                "name": "sfGuardPlugin",
                "version": "4.0.2",
                "source": {
                    "url": "http://svn.symfony-project.com/plugins/sfGuardPlugin/",
                    "type": "svn",
                    "reference": "branches/1.3/"
                }
            }
        }
    ],
    "require": {
        "sfGuardPlugin": "4.0.*"
    }
}

अच्छा, क्या मैं भी इसे किसी तरह बना सकता हूं ताकि निकाले गए फ़ोल्डर को उतना गहरा न जाए जितना कि अब है:, plugins/sfGuardPlugin/sfGuardPlugin-4.0.2/इसके बजाय मुझे चाहिए plugins/sfGuardPlugin?
टॉवर

हाँ, बस यही देखा। मैं एक अलग प्रकार (इसके बजाय tar) के साथ कोशिश कर रहा हूं ।
j0k

यह अच्छी तरह से काम करता है - इसलिए उनके पास अभी भी सब कुछ है :)
टॉवर

3
क्या केवल विशिष्ट पैकेज के लिए विक्रेता को निर्दिष्ट करने का एक तरीका है, और दूसरों को डिफ़ॉल्ट के रूप में छोड़ दें?
mr1031011

1
यह एक महान और
शोधपूर्ण

28

आप कंपोजर / इंस्टॉलर , "सिम्फनी 1-प्लगइन" पैकेज प्रकार के साथ एक मल्टी-फ्रेम कंपोजर लाइब्रेरी इंस्टॉलर का उपयोग कर सकते हैं । यह मेरी कंपोजर.जॉसन फ़ाइल जैसी दिखती है, इसके लिए सिम्फनी 1.4 को स्थापित करने के लिए (लिब / वेंडर में) और प्लग इन (/ प्लग इन) दोनों हैं:

{
    "config": {
        "vendor-dir": "lib/vendor"
    },
    "repositories": {
        "symfony": {
            "type": "package",
            "package": {
                "name": "symfony/symfony1",
                "version": "1.4",
                "dist": {
                    "url": "https://github.com/symfony/symfony1/zipball/1.4",
                    "type": "zip"
                }
            }
        },
        "sfResquePlugin" : {
            "type": "package",
            "package": {
                "name": "devpips/sfResquePlugin",
                "type": "symfony1-plugin",
                "version": "0.1",
                "dist": {
                    "url": "https://github.com/devpips/sfResquePlugin/zipball/master",
                    "type": "zip"
                }
            }
        }
    },
    "require": {
        "composer/installers": "dev-master",
        "symfony/symfony1": "1.4",
        "devpips/sfResquePlugin":"0.1"
    }
}

मैं नहीं देखता कि यह कैसे कुछ भी इंगित करेगा /plugins- क्या आप विस्तृत कर सकते हैं?
इसहाक लुबो

@IsaacLubow, यह composer-installersपैकेज द्वारा किया जाएगा , जैसा symfony1कि वहाँ एक प्लगइन है :) Symfony1Installer.php की
भावना

11

COMPOSER_VENDOR_DIRपर्यावरण चर देखें ।

इस संस्करण को सेट करके आप कम्पोज़र को विक्रेता के अलावा एक निर्देशिका में निर्भरता स्थापित कर सकते हैं।

उस स्थिति में मददगार हो सकता है जब आप इसे किसी विशेष वातावरण जैसे कि आवारा या डॉकटर में ओवरराइड करना चाहते हैं जहां आप यह साझा फ़ोल्डर / वॉल्यूम में नहीं करना चाहेंगे।

और जैसा कि J0k ने कहा, वहाँ vendor-dirमें configकी धाराcomposer.json

वेंडर को चूक यदि आप चाहते हैं तो आप एक अलग निर्देशिका में निर्भरता स्थापित कर सकते हैं। $ HOME और ~ को आपके होम डाइरेक्टरी के वेंडर-डायर के रास्ते और नीचे दिए गए सभी * -डिर ऑप्शंस से बदल दिया जाएगा।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.