संगीतकार अद्यतन और संगीतकार स्थापित करने के बीच अंतर क्या हैं?


जवाबों:


296

संगीतकार अपडेट

composer update जैसे-जैसे वे निर्दिष्ट होते हैं, वैसे-वैसे आपकी अवसादों को अद्यतन करते जाएंगे composer.json

उदाहरण के लिए, यदि आपको निर्भरता के रूप में इस पैकेज की आवश्यकता है:

"mockery/mockery": "0.9.*",

और आपने वास्तव 0.9.1में पैकेज के संस्करण को स्थापित किया है , इस पैकेज को चलाने composer updateसे इस पैकेज का उन्नयन होगा (उदाहरण के लिए 0.9.2, यदि यह पहले ही जारी किया जा चुका है)

विस्तार से composer updateहोगा:

  • पढ़ें composer.json
  • उन स्थापित पैकेजों को हटा दें जिनकी आवश्यकता नहीं है composer.json
  • अपने आवश्यक पैकेजों के नवीनतम संस्करणों की उपलब्धता की जाँच करें
  • अपने संकुल के नवीनतम संस्करण स्थापित करें
  • अपडेट composer.lockकिए गए संकुल संस्करण को संग्रहीत करने के लिए अद्यतन करें

संगीतकार स्थापित करें

composer installकुछ भी अपडेट नहीं करेगा; यह composer.lockफ़ाइल में निर्दिष्ट सभी निर्भरताओं को स्थापित करेगा

विस्तार से:

  • जाँच करें कि क्या composer.lockफ़ाइल मौजूद है (यदि नहीं, तो चलाएं composer-updateऔर बनाएं)
  • composer.lockफ़ाइल पढ़ें
  • composer.lockफ़ाइल में निर्दिष्ट संकुल को स्थापित करें

कब इंस्टॉल करना है और कब अपडेट करना है

  • composer updateज्यादातर 'विकास के चरण' में उपयोग किया जाता है, हमारे प्रोजेक्ट पैकेजों को composer.jsonफ़ाइल में निर्दिष्ट किए गए अनुसार अपग्रेड करने के लिए ,

  • composer install कंपोज़र अपडेट द्वारा बनाई गई कंपोज़र.लॉक फ़ाइल में संग्रहीत समान निर्भरता का उपयोग करके, उत्पादन सर्वर या परीक्षण वातावरण पर हमारे एप्लिकेशन को स्थापित करने के लिए मुख्य रूप से 'तैनाती चरण' में उपयोग किया जाता है।


5
आपने यह नहीं बताया कि यदि हमारे पास कोई लॉक फ़ाइल और कॉल कंपोज़र नहीं है तो क्या होगा। अच्छा वर्णन btw।
user1954544

1
महत्वपूर्ण बात जो आपको एक दिन काट सकती है - लॉक फ़ाइल पुनरावर्ती नहीं है। यदि कुछ पैकेज में निर्भरताएँ शिथिल हैं और यदि आप किसी प्रोजेक्ट की क्लीन कॉपी को क्लीन मशीन पर हथियाने के लिए होते हैं, तो यह नेस्टेड निर्भरता के विभिन्न संस्करणों को स्थापित कर सकता है, जिसमें नए बग या ब्रेकिंग परिवर्तन भी शामिल हो सकते हैं! विशेष रूप से निरंतर एकीकरण और बिल्ड सर्वर पर प्रासंगिक। समाधान - नेस्टेड समस्याग्रस्त पैकेज के लिए शिकार करें और अपने निश्चित अच्छे संस्करण को जेसन और लॉक फ़ाइल में जोड़ें।
जस्टअमार्टिन

और composer global updateस्थानीय प्रणाली ( COMPOSER_HOMEenv वेरिएबल) पर अपने वैश्विक भंडार में निर्भरता को अद्यतन करता है
Yousha Aleayoub

1
फिर, मैं उत्पादन सर्वर पर किसी विशिष्ट पैकेज को सुरक्षित रूप से कैसे अपडेट कर सकता हूं?
मिशेल

@ मिचेल आपको पहले composer updateअपने स्थानीय सिस्टम पर चलना चाहिए और अपने एप्लिकेशन का परीक्षण करना चाहिए , फिर कंपोज़र को अपलोड करें। अपने प्रोडक्शन सर्वर पर चलाएं और चलाएंcomposer install
Amin Shojaei

58

जब आप composer installइसे चलाते हैं तो यह एक लॉक फ़ाइल की तलाश करेगा और इसमें जो कुछ भी निहित है उसे स्थापित करेगा, अगर यह एक नहीं मिल सकता है, तो यह पढ़ेगा composer.json, इसकी निर्भरताएं स्थापित करेगा और लॉकफ़ाइल उत्पन्न करेगा।

जब आप composer updateइसे चलाते हैं तो यह केवल पढ़ता है composer.json, निर्भरताएं स्थापित करता है और लॉकफाइल को अपडेट करता है (या एक नया लॉकफाइल बनाता है)।


23

composer install

  1. अगर composer.lockमौजूद है।
    • composer.lockफ़ाइल से निर्भरता को संसाधित और स्थापित करता है ।
  2. तो composer.lockकरता नहीं मौजूद हैं।
    • प्रक्रिया पैकेज से स्थापित करता है composer.json
    • composer.lockस्थापित पैकेज के आधार पर फ़ाइल बनाता है।

प्रति composer help install:

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


composer update

  1. composer.jsonफ़ाइल से निर्भरता संसाधित करता है (इंस्टॉल, अपडेट और हटाता है)।
  2. composer.lockपरिवर्तनों के अनुसार फ़ाइल बनाता या अपडेट करता है ।

प्रति composer help update:

अद्यतन कमांड composer.jsonवर्तमान निर्देशिका से फ़ाइल पढ़ता है , इसे संसाधित करता है, और सभी निर्भरताओं को अपडेट, हटा या स्थापित करता है।


इसे भी देखें: संगीतकार: यह लॉक फाइल के बारे में है


संगीतकार 3 स्थापित करने का कोई मतलब नहीं है। यदि .lock फ़ाइल पहले से मौजूद है तो वह इसे पढ़ लेगी और इसे कभी "अपडेट" नहीं करेगी। इसे केवल तब ही बनाया जाता है जब यह अभी तक मौजूद नहीं है ..
बेन

@ जब मैंने बिंदुओं को स्पष्ट किया है, मुझे पता है कि क्या वे अभी समझ में आते हैं।
kenorb

3

composer updateऔर के बीच सबसे अच्छा अंतरcomposer install

संगीतकार स्थापित करें

निर्भरता जोड़ने के लिए आपको इसे कंपोजर.जॉन फ़ाइल में मैन्युअल रूप से जोड़ना होगा।

अगर कंपोज़र.लॉक फ़ाइल मौजूद है, तो इस फ़ाइल में जो विशिष्ट है, उसे स्थापित करें

  • अन्यथा यह देखने के लिए कि कौन-सी निर्भरताएँ स्थापित की जानी हैं, संगीतकार.जॉसन फ़ाइल पढ़ें
  • कंपोज़र लिखें। प्रोजेक्ट की जानकारी (स्थापित निर्भरता) के साथ।

इस कमांड के साथ किसी भी कंपोनेंट को अपडेट नहीं किया जाएगा।

संगीतकार अपडेट

निर्भरता जोड़ने या हटाने के लिए आपको इसे कंपोजर.जॉन फ़ाइल में मैन्युअल रूप से जोड़ना होगा

  • कंपोज़र.लॉक फ़ाइल को अनदेखा किया जाएगा
  • कंपोज़र.जसन फ़ाइल निर्भरताएँ स्थापित और अद्यतन की जाएंगी (यदि निर्भरता स्थापित नहीं है तो इसे डाउनलोड किया जाएगा)

यदि आप लाइब्रेरी को जोड़ना या हटाना नहीं जानते (जो कि वास्तव में आसान है, तो बस फ़ाइल की आवश्यक संपत्ति में निर्भरता और संस्करण का नाम जोड़ें) composer.json फ़ाइल को मैन्युअल रूप से या आप संशोधित करें इसके बजाय कमांड लाइन का उपयोग करना पसंद करें, इसके लिए संगीतकार के विशेष कार्य हैं:

संगीतकार की आवश्यकता है

उदाहरण के लिए यदि हम कमांड लाइन के साथ एक निर्भरता जोड़ना चाहते हैं तो हम बस निष्पादित करेंगे

composer require twig/twig

  • कंपोज़र.जसन फ़ाइल को स्वचालित रूप से संशोधित किया जाएगा और नई निर्भरता जोड़ी जाएगी
  • निर्भरता परियोजना के लिए डाउनलोड किया जाएगा

संगीतकार हटा

यदि आप अप्रयुक्त निर्भरता को दूर करना चाहते हैं, तो हम बस निष्पादित करेंगे:

composer remove twig/twig --update-with-dependencies

  • अपने सभी आश्रितों के साथ टहनी को हटा दिया जाएगा

1

संगीतकार स्थापित करें

if(composer.lock existed){
   installs dependency with EXACT version in composer.lock file
} else {
   installs dependency with LATEST version in composer.json
   generate the composer.lock file
}

संगीतकार अपडेट

composer update = remove composer.lock -> composer install

हमें 2 कमांड क्यों चाहिए मुझे लगता है कि यह संगीतकार द्वारा समझा सकता है।

कल्पना कीजिए, हमारे पास नहीं है composer.lockऔर composer.jsonएक निर्भरता है "monolog/monolog": "1.0.*"या "monolog/monolog": "^1.0"
फिर, इसके कुछ मामले होंगे

  • हम वर्तमान निर्भरता संस्करण (जैसे: 1.0.0) के साथ आज अच्छी तरह से काम कर रहे हैं, लेकिन कुछ महीने बाद, निर्भरता अपडेट (उदाहरण: 1.0.1) और संभव है कि कुछ बग हों
  • एक अन्य टीम के सदस्य का एक अलग निर्भरता संस्करण हो सकता है यदि वे composer installएक अलग समय में चलते हैं ।

क्या होगा यदि हम हमेशा एक EXACT संस्करण का उपयोग करते हैं composer.jsonजैसे "monolog/monolog": "1.0.1"?
हमें अभी भी आवश्यकता है composer.lockक्योंकि composer.jsonकेवल आपके निर्भरता के मुख्य संस्करण को ट्रैक करता है, यह निर्भरता के निर्भरता के संस्करण को ट्रैक नहीं कर सकता है।

क्या होगा यदि निर्भरता की सभी निर्भरता भी EXACT संस्करण का उपयोग करें?
कल्पना कीजिए कि आप सभी निर्भरताओं के साथ शुरू करते हैं, जो EXACT संस्करण का उपयोग करते हैं तो आपको इसकी परवाह नहीं है composer.lock। हालाँकि, कुछ महीने बाद, आप एक नई निर्भरता (या पुराने निर्भरता को अद्यतन) जोड़ते हैं, और इस निर्भरता की निर्भरता EXACT संस्करण का उपयोग नहीं करते हैं। फिर composer.lockशुरुआत में देखभाल करना बेहतर है ।

इसके अलावा, एक सटीक संस्करण पर सिमेंटिक संस्करण का एक फायदा है। हम विकास के दौरान निर्भरता को कई बार अपडेट कर सकते हैं और लाइब्रेरी में अक्सर कुछ छोटे बदलाव होते हैं जैसे बग फिक्स। फिर निर्भरता को अपग्रेड करना आसान है जो सिमेंटिक संस्करण का उपयोग करता है।

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