सवाल संगीतकार स्थापित पथ निर्दिष्ट कैसे करें?


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

{
    "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/। मैं इसे कैसे निर्दिष्ट करूं?


76
2017-08-09 12:23


मूल




जवाब:


ऐसा लगता है कि आप परिभाषित कर सकते हैं 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.*"
    }
}

115
2017-08-09 12:39



अच्छा, क्या मैं इसे किसी भी तरह से बना सकता हूं ताकि निकाला गया फ़ोल्डर उतना गहरा नहीं जा सके जितना अब करता है: plugins/sfGuardPlugin/sfGuardPlugin-4.0.2/, बल्कि मैं चाहता हूँ plugins/sfGuardPlugin? - Tower
हाँ, बस देखा। मैं एक अलग प्रकार के साथ कोशिश कर रहा हूँ (इसके बजाए tar)। - j0k
यह अच्छी तरह से काम करता है - इसलिए उनके पास अभी भी एक भंडार है :) - Tower
क्या केवल कुछ विशिष्ट पैकेज के लिए विक्रेता डीआईआर निर्दिष्ट करने का कोई तरीका है, और दूसरों को डिफ़ॉल्ट के रूप में छोड़ दें? - mr1031011
यह एक महान और शोधित उत्तर है, लेकिन एडम के वी को ढीला मत करो, क्योंकि यह अधिक आधिकारिक लगता है, ओह और आसान ;-) - mTorres


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

{
    "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"
    }
}

25
2017-08-19 00:16





देख COMPOSER_VENDOR_DIR वातावरण विविधता।

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

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

और जैसा कि जे 0k ने कहा, वहाँ है vendor-dir में config का संभाग composer.json

विक्रेता के लिए डिफ़ॉल्ट। यदि आप चाहें तो आप निर्भरताओं को एक अलग निर्देशिका में स्थापित कर सकते हैं। $ HOME और ~ को विक्रेता-डीआईआर और आपके सभी * -dir विकल्पों में आपके घर निर्देशिका के पथ द्वारा प्रतिस्थापित किया जाएगा।


5
2018-04-18 18:48