डेवलपर मोड में कौन से संकलन कमांड की आवश्यकता है और कब?


24

Magento 2 डेवलपर मोड में कौन से संकलन कमांड चलाने के लिए कोई मुझे निर्देश दे सकता है? मुझे यकीन नहीं है कि मैं इसे अभी तक समझ रहा हूं।

Devdocs में, डेवलपर मोड निम्नानुसार वर्णित है:

  • स्थिर दृश्य फ़ाइलें कैश नहीं होती हैं; हर बार जब भी उन्हें बुलाया जाता है तो उन्हें मैगेंटो पब / स्टेटिक डायरेक्टरी में लिखा जाता है

क्या इसका मतलब यह है कि पब / स्टैटिक में प्रत्येक व्यक्तिगत फ़ाइल तब उत्पन्न होती है जब उसे अनुरोध किया जाता है और आपको कभी कॉल करने की आवश्यकता नहीं होती है setup:static-content:deploy? यह मेरे अनुभव के विपरीत है। या क्या मैं किसी भी फाइल को डिलीट कर सकता हूं और उन्हें दोबारा बनाया जाएगा? इसके अलावा, चित्र, सीएसएस और जेएस फाइलें अलग तरह से व्यवहार की जाती हैं।

डेवलपर मोड दस्तावेज़ीकरण पृष्ठ कोड संकलन के बारे में कुछ नहीं कहता है, लेकिन मुझे लगता है कि इसमें भी अंतर था, इसलिए फाइलों setup:di:compileमें सभी परिवर्तनों के बाद इसे चलाने के लिए आवश्यक नहीं था di.xml। क्या यह सही है और यदि हां, तो डेवलपर मोड में कोड जनरेशन कैसे काम करता है?

दूसरे शब्दों में: कैश को एक तरफ, कौन से आदेशों के बाद मुझे चलाने की आवश्यकता है?

जवाबों:


27

ध्यान दें: मैंने अनुभव किया है कि डेवलपर मोड को हटाने pub/staticसे तंत्र टूट जाएगा क्योंकि आपको .htaccessउस फ़ोल्डर में जादू करने वाली फ़ाइल से छुटकारा मिल जाता है।

यदि आप pub/static/.htaccessफ़ाइल को डेवलपर मोड में रखते हैं, तो आपको किसी भी संकलन कमांड को चलाने की आवश्यकता नहीं है: जैसे ही वे अनुरोध करते हैं, मैगेंटो फाइलों में सहानुभूति पैदा करेगा। इसका मतलब है कि स्थैतिक संपत्ति में परिवर्तन तुरंत दिखाई देगा, बशर्ते आपके पास कैश अक्षम भी हो।

आप pub/static/frontendया pub/static/adminhtmlइसके बजाय हटा सकते हैं ।

में डिफ़ॉल्ट मोड संपत्ति कर रहे हैं materialized में pub/staticसबफ़ोल्डर, जिसका अर्थ है वे पहली बार अनुरोध पर बनाई गई हैं (कॉपी, सांकेतिक रूप से लिंक नहीं)। यदि आप उन्हें संशोधित करते हैं तो आपको उन्हें अपडेट करने के लिए कैश फ्लश करना होगा।

में उत्पादन मोड परिसंपत्तियों (अनुरोध पर 404 HTTP त्रुटि उत्पन्न कर) जब तक आप चलाने materialized नहीं कर रहे हैं bin/magento setup:static-content:deployआदेश।

आशा करता हूँ की ये काम करेगा।


DI संकलन के बारे में क्या?
इरफान

@ इरफान क्या आप अधिक सटीक मतलब है?
एलेसेंड्रो रोंची

2
यह सवाल DI संकलन पर तैनाती मोड के प्रभाव के बारे में भी प्रश्न करता है। मैंने अभी एक त्वरित परीक्षण किया है, और यदि आप डेवलपर मोड में हैं, तो आपको di.xmlदिखाने के लिए अपने परिवर्तनों के क्रम में DI को संकलित करने की आवश्यकता नहीं है (लगता है कि प्रति पेज-हिट पर कोड पीढ़ी फ्लाई पर किया जाता है?) किसी भी तरह? यह आपके पहले से ही अच्छे उत्तर के लिए एक अच्छा जोड़ होगा!
इरफान

आप सही हैं @ इरफान
एलेसेंड्रो रोंची

1+ धन्यवाद भाई। एक जादू की तरह काम किया। डेवलपर मोड में भी कम से कम सीएसएस से अपने परिवर्तन प्राप्त करने के लिए मुझे बार-बार आदेशों को लागू करने का एक बहुत बुरा अनुभव था। मैंने एक अन्य परियोजना से .htaccess की प्रतिलिपि बनाई और उल्लिखित स्थान पर चिपका दी। Khalaaas!
उमर यूसुफ

4

मेरे अनुभव से, आपको डेवलपर मोड में कोड / स्टेटिक-फाइल पीढ़ी के लिए कोई कमांड चलाने की आवश्यकता नहीं है।

यदि स्थिर फ़ाइलें उत्पन्न नहीं हुई थीं, तो कोई अन्य समस्या हो सकती है।

मुझे पहली नजर में इसके दो कारण दिखाई देते हैं:

  • डेवलपर मोड सही से काम नहीं कर रहा है। हो सकता है कि सक्रियता किसी कारण से विफल हो गई
  • पब / static.php पर स्थिर फ़ाइलों के लिए फिर से लिखना काम नहीं कर रहा है

1
पब / स्टेटिक में मेरी कम फ़ाइल री-जेनरेट नहीं होती है। क्या आपको यह समस्या है। इसे कैसे ऑटो-
रीजेनरेट किया जाए

यह महत्वपूर्ण है कि डेवलपर मोड सक्रिय है और taht rewrites भी काम कर रहे हैं, क्योंकि स्थैतिक फ़ाइलों के लिए किसी भी अनुरोध को पब / static.php को फिर से लिखा जाता है, जो तब पब / स्टेटिक के तहत फाइल (डेवलपर मोड में) उत्पन्न करता है यदि यह पहले से मौजूद नहीं है
डेविड वेरहोलेन

4

क्या इसका मतलब यह है कि पब / स्टैटिक में प्रत्येक व्यक्तिगत फ़ाइल तब उत्पन्न होती है जब उसे अनुरोध किया जाता है और आपको कभी कॉल करने की आवश्यकता नहीं होती है setup:static-content:deploy? यह मेरे अनुभव के विपरीत है। या क्या मैं किसी भी फाइल को डिलीट कर सकता हूं और उन्हें दोबारा बनाया जाएगा?

हाँ। लेकिन मेरे अनुभव के अनुसार यह ज्यादातर समय काम नहीं करता है। एक बग हो सकता है। बेहतर उपाय यह है कि pub/staticजब भी आपने स्थिर फ़ाइल (js, css, html, इत्यादि) को बदला है, तब भी सामग्री को हटाना और स्थैतिक सामग्री को फिर से लागू करना है, यहां तक ​​कि आपने पहले से ही डेवलपर मोड को सक्रिय कर दिया है। इस बारे में मेरा अपना सवाल है।


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

4

बस तीन अलग-अलग तरीकों (स्रोत: मैगेंटो यू फंडामेंटल्स कोर्स) के बीच स्पष्ट करने के लिए। बोल्ड में, आपके प्रश्न से संबंधित विशिष्ट बिंदु।

डेवलपर मोड

  • स्टेटिक फ़ाइल मटेरियलिज़ेशन सक्षम नहीं है।
  • ब्राउज़र में प्रदर्शित अपवाद नहीं
  • त्रुटि हैंडलर में फेंके गए अपवाद, लॉग नहीं किए गए
  • सिस्टम लॉगिंग var/report, अत्यधिक विस्तृत।

जब आप अनुकूलन या एक्सटेंशन विकसित कर रहे हों तो आपको डेवलपर मोड का उपयोग करना चाहिए। इस मोड का मुख्य लाभ यह है कि त्रुटि संदेश आपको दिखाई देते हैं। प्रदर्शन पर इसके प्रभाव के कारण इसका उपयोग उत्पादन में नहीं किया जाना चाहिए। डेवलपर मोड में, स्थिर दृश्य फ़ाइलें हर बार अनुरोध किए जाने पर उत्पन्न होती हैं। उन्हें pub/staticनिर्देशिका में लिखा जाता है , लेकिन इस कैश का उपयोग नहीं किया जाता है। इसका बड़ा प्रदर्शन प्रभाव पड़ता है, लेकिन फ़ाइलों को देखने के लिए डेवलपर द्वारा किए गए कोई भी परिवर्तन तुरंत दिखाई देते हैं।

बिना अपवाद किए गए अपवादों को ब्राउज़र में प्रदर्शित किया जाता है, बजाय लॉग किए जाने के। जब भी किसी ईवेंट सब्सक्राइबर को आमंत्रित नहीं किया जा सकता है तो एक अपवाद रखा जाता है।

var/reportइस मोड में सिस्टम लॉगिंग अत्यधिक विस्तृत है।

उत्पादन मोड

  • उत्पादन प्रणाली पर तैनाती का चरण; उच्चतम प्रदर्शन
  • अपवाद उपयोगकर्ता को प्रदर्शित नहीं होते हैं - केवल लॉग में लिखे जाते हैं।
  • यह मोड स्टैटिक फाइल मटेरियलाइजेशन को निष्क्रिय करता है।
  • Magento के डोकरो में केवल-पढ़ने की अनुमति हो सकती है।

एक बार इसे उत्पादन सर्वर में तैनात करने पर आपको Magento को प्रोडक्शन मोड में चलाना चाहिए।

प्रोडक्शन मोड मैजेंटो 2 में उच्चतम प्रदर्शन प्रदान करता है।

इस मोड का सबसे महत्वपूर्ण पहलू यह है कि त्रुटियों को फ़ाइल सिस्टम में लॉग किया जाता है और उपयोगकर्ता को कभी भी प्रदर्शित नहीं किया जाता है। इस मोड में, स्थिर दृश्य फाइलें मक्खी पर नहीं बनाई जाती हैं जब वे अनुरोध किए जाते हैं; इसके बजाय, उन्हें pub/staticकमांड-लाइन टूल का उपयोग करके निर्देशिका में तैनात किया जाना है । उत्पन्न पृष्ठों में तैनात पेज संसाधनों के लिए सीधे लिंक होंगे।

फ़ाइलों को देखने के लिए किसी भी परिवर्तन को फिर से तैनाती उपकरण चलाने की आवश्यकता होती है।

क्‍योंकि CLI टूल का उपयोग करके व्यू फाइल्‍स को तैनात किया जाता है, वेब उपयोगकर्ता को लिखने की पहुंच होनी चाहिए। Magento pub/staticनिर्देशिका में केवल-पढ़ने की अनुमति हो सकती है, जो सार्वजनिक रूप से सुलभ सर्वर पर अधिक सुरक्षित सेटअप है।

डिफ़ॉल्ट मोड

  • अन्य मोड निर्दिष्ट नहीं होने पर उपयोग किया जाता है
  • उपयोगकर्ता से अपवादों को छुपाता है और उन्हें फ़ाइलों को लॉग करने के लिए लिखता है
  • स्टेटिक फ़ाइल मटीरियलिज़ेशन सक्षम है।
  • अनुशंसित नहीं / उत्पादन के लिए अनुकूलित नहीं: कैशिंग प्रभाव नकारात्मक रूप से प्रदर्शन करता है।

जैसा कि इसके नाम का अर्थ है, डिफ़ॉल्ट मोड यह है कि कैसे Magento सॉफ़्टवेयर संचालित होता है यदि अन्य मोड निर्दिष्ट नहीं है।

इस मोड में, इरोज को फाइलों में लॉग इन किया जाता है var/reportsऔर कभी भी यूजर को नहीं दिखाया जाता है। स्थैतिक दृश्य फ़ाइलों को मक्खी पर भौतिकीकृत किया जाता है और फिर कैश किया जाता है।

डेवलपर मोड के विपरीत, दृश्य फ़ाइल परिवर्तन तब तक दिखाई नहीं देते हैं जब तक उत्पन्न स्थिर दृश्य फ़ाइलें साफ़ नहीं हो जाती हैं।

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

दूसरे शब्दों में, फ्लाई पर स्थैतिक फ़ाइलों का निर्माण और उन्हें स्थैतिक फ़ाइल निर्माण कमांड लाइन टूल का उपयोग करके उत्पन्न करने की तुलना में अधिक प्रदर्शन प्रभाव पड़ता है।

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