Magento2: री पब / स्टेटिक फ़ोल्डर में css फ़ाइल जनरेट करें


51

मैंने Magento 2 स्थापित किया है और डेवलपर मोड सेट किया है, तो मैंने एक मॉड्यूल स्थापित किया है जिसमें सीएसएस और जेएस फाइलें शामिल हैं। मॉड्यूल ठीक काम करता है और css और js फाइलें पब / स्टैटिक फ़ोल्डर से रेंडर कर रहा है। अब मैंने मॉड्यूल डायरेक्टरी सीएसएस फाइल और रन कमांड में सीएसएस परिवर्तन किए हैं

php bin/magento setup:static-content:deploy

लेकिन मैगेंटो पब / स्टैटिक सीएसएस फाइलों में मेरे नए बदलाव नहीं कर रहा है इसलिए मुझे पुरानी सीएसएस फाइल सामग्री मिल रही है। क्या कोई जानता है कि पब / स्टेटिक फ़ोल्डर में पूरी सीएसएस फाइल को कैसे पुनर्जीवित किया जाए?


8
FYI करें: Magento 2 में एक डेवलपर मोड है ताकि आपको हर समय स्थिर सामग्री को तैनात न करना पड़े। मैंने पिछले महीने में स्थिर सामग्री को फिर से तैयार करने में घंटे और घंटे बर्बाद कर दिए हैं। तो मेरी तरह मत बनो, और डेवलपर मोड पर स्विच करें (अपने स्थानीय मशीन पर। आपका लाइव सर्वर प्रोडक्शन मोड पर होना चाहिए)
नाथन मेरिल

क्यों अलग संस्करण के साथ पुनर्जीवित ??? मेरे पास एक मुद्दा है जिसमें फ़ाइल संस्करण मेल नहीं खाता है। magento.stackexchange.com/questions/94502/…
Magento2 Devloper

3
अगर Magento डेवलपर मोड में है, तो यह स्टैटिक फाइल्स के लिए सिम्लिंक बनाएगा, लेकिन ऐसा होने के लिए आपको फोल्डर .htaccessमें फाइल pub/static.htaccess
रखनी होगी

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

जवाबों:


69

पब / स्टैटिक हटाने से पहले पब / स्टैटिक / .htaccess का बैकअप बना लें और इसे फिर से रिस्टोर करें। अन्यथा आपकी सभी css और js में 404 त्रुटि दिखाई देगी!

  1. pub/static[.Htaccess को बैकअप रखें और फिर से कॉपी करें] निकालें
    1. हटाना var/cache
    2. हटाना var/composer_home
    3. हटाना var/generation
    4. हटाना var/page_cache
    5. हटाना var/view_preprocessed
    6. Daud php bin/magento setup:static-content:deploy

48
एम 2 चीजों को बहुत डेवलपर के अनुकूल नहीं बनाता है।
मैथ्यू मैक्लेनन

10
@CarComp किसी भी फाइल को कभी भी मैनुअली डिलीट नहीं करना चाहिए। मैजेंटो को इसका ध्यान रखना चाहिए। यह बहुत कष्टप्रद है
क्लॉडिया क्रेंगा


6
मुझे लगता है कि पब / स्टैटिक को हटाने से आप .htaccess फाइल को खो देते हैं, जो कि 404 त्रुटियों से बचने के लिए महत्वपूर्ण है। पब / स्टैटिक के सबफ़ोल्डर्स को हटाना ठीक है लेकिन उस .htaccess को संरक्षित किया जाना चाहिए
Elio Ermini

3
मैं "magento" के लिए नया हूँ। WAT? क्या यह सीएसएस अपडेट करने का आधिकारिक तरीका है?
पुचू

20

यहाँ उत्तर में यह उल्लेख नहीं है कि आपको पब / स्टेटिक फ़ोल्डर में .htaccess को नहीं हटाना चाहिए

.htacces को छोड़कर सभी फाइलें हटाने के लिए पब / स्टैटिक डायरेक्टरी में जाएं और रन करें

find . -depth -name .htaccess -prune -o -delete

तो आप चला सकते हैं

rm -rf var/cache/ var/generation/ var/page_cache/ var/view_preprocessed/ 

क्यों अलग संस्करण के साथ पुनर्जीवित ??? मेरे पास एक मुद्दा है जिसमें फ़ाइल संस्करण मेल नहीं खाता है। magento.stackexchange.com/questions/94502/…
Magento2 Devloper

1
उम्मीद के
मुताबिक

11

मैंने pub/staticफ़ोल्डर से केवल सीएसएस फाइलें हटा दी हैं और कमांड चला रहा हूं :

php bin/magento setup:static-content:deploy

यह नवीनतम परिवर्तनों के साथ उसी फ़ाइल को फिर से जनरेट करेगा।


क्यों अलग संस्करण के साथ पुनर्जीवित ??? मेरे पास एक मुद्दा है जिसमें फ़ाइल संस्करण मेल नहीं खाता है। magento.stackexchange.com/questions/94502/…
Magento2 Devloper

9

जैसा कि प्रश्न डेवलपर मोड js and cssमें Magento 2 में अद्यतन के लिए है।

  1. अपने सम्मानित मॉड्यूल में जेएस को अपडेट करने से पहले पेज को रीफ्रेश करने से पहले उसी फाइल को pub/static/frontend/namespace/theme/ ... module/js/...डिलीट कर दें ताकि पेज रिफ्रेश होने के बाद जेएस फाइल पब फोल्डर में जेनरेट हो जाए।
  2. CSS को अपने सम्मानित मॉड्यूल में अपडेट करना, pt 1 करें।
  3. कम फ़ाइल को अद्यतन करना

Magento में सेटअप विषय ...\dev\tools\grunt\configs\themes.js

अपने विषय के लिए किसी भी एक विषय उदाहरण luma विषय को क्लोन करें और एक नाम मान लें xyz

xyz: {
        area: 'frontend',
        name: 'Magento/luma',
        locale: 'en_US',
        files: [
            'css/styles-m',
            'css/styles-l'
        ],
        dsl: 'less'
    }

रूट फ़ोल्डर में फ़ाइल नाम बदलें: Gruntfile.js.ample नमूना से Gruntfile.js

रूट फ़ोल्डर में फ़ाइल नाम बदलें: package.json.sample to package.json

आप साइट फ़ोल्डर में grunt है की जरूरत है npm के माध्यम से स्थापित करें

प्रशासक की अनुमति से ओपन कमांड प्रॉम्प्ट

सीएमडी में साइट फ़ोल्डर पर जाएं और grunt exec:themeथीम को तैनात करने के बाद पहली बार हिट करें

फिर grunt less:theme हर बार अगर हम कम में कोई बदलाव करते हैं

यदि आप कम उपयोग में अक्सर परिवर्तन कर रहे हैं grunt watchतो यह स्वचालित हिट होगाgrunt less:theme

नोट: आपको सिमलिंक एरर मिल सकती है इसलिए फाइल पर जाएं .../app/etc/di.xmlऔर कमेंट करें या कोड (कोड के नीचे) को लोकल में तब तक करें जब तक डेवलपमेंट न हो जाए, इस फाइल के chnaged कोड को सर्वर पर न धकेलें, यह केवल लोकल में ही जरूरी है।

<item name="view_preprocessed" xsi:type="object">Magento\Framework\App\View\Asset\MaterializationStrategy\Symlink</item>

7

सरल तरीका १

Magento के व्यवस्थापक में। पर जाएं System > Tools > Cache Managementऔर फ्लश स्टेटिक फाइल कैश पर क्लिक करें ।

सरल तरीका २

यदि आपने अभी-अभी पहले से मौजूद css फ़ाइल को बदला है, तो आपको जो करने की ज़रूरत है, वह केवल संबंधित फ़ाइल को हटा देगा pub/static, फिर जब आप पृष्ठ को ताज़ा करेंगे, तो यह नया संस्करण css फ़ाइल उत्पन्न करेगा। यह डेवलपर मोड में काम करता है


नोटिस

  1. जब आप किसी मौजूदा फ़ाइल को संशोधित करने के बजाय नई फ़ाइल बनाते हैं, तो आपको कैश साफ़ करना भी पड़ सकता है php bin/magento cache:flush

  2. डिफ़ॉल्ट मोड और डेवलपर मोड को स्थिर दृश्य फ़ाइलों को तैनात करने की आवश्यकता नहीं है , क्योंकि स्थैतिक फ़ाइलों को गतिशील रूप से भौतिक रूप से उत्पन्न किया जाता है। (संदर्भ: Magento मोड के बारे में )

  3. में उत्पादन मोड , आप कर सकते हैं भी जरूरत है php bin/magento setup:static-content:deployऔर php bin/magento cache:flush, मैं कोशिश मत करो उत्पादन मोड अभी तक।


6

ठीक है, इसलिए जो मैंने विभिन्न अन्य पदों पर पढ़ा है और मेरे व्यक्तिगत अनुभव के आधार पर यहां सीएसएस या किसी भी स्टेटिक सामग्री को पुन: उत्पन्न करने की प्रक्रिया है:

php bin/magento setup:upgrade

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

php bin/magento setup:di:compile

यह तब फ़ाइलों को फिर से संकलित करेगा। अंततः:

php bin/magento setup:static-content:deploy

अंतिम कमांड के बाद सब कुछ नया और ताज़ा होना चाहिए, बस अपने पृष्ठ को ताज़ा करें।

----- टिप्पणियाँ ------

1) सुनिश्चित करें कि आपकी फ़ाइल अनुमतियाँ और स्वामी: उपयोगकर्ता समूह ऐसा करने से पहले सही तरीके से सेट किया गया है, आपको अपने sysadmin के साथ इनके बारे में बोलने की आवश्यकता हो सकती है।

2) यदि आपका सेटअप: अपग्रेड कमांड विफल हो जाता है तो यह फाइलों को हटा सकता है और नए लिखने में असमर्थ हो सकता है, जैसा कि फ़ाइल अनुमतियों के कारण मेरा मामला था। यह आपकी साइट को तोड़ सकता है, बस अनुमतियों को बाहर कर सकता है, फिर कमांड को फिर से चला सकता है।

3) मुझे (अभी तक) केवल एक विशिष्ट विषय या फ़ाइल को फिर से संकलित करने का एक तरीका नहीं मिला है (अगर किसी को कोई रास्ता मिल जाए तो सुपर उपयोगी होगा) पूरी तरह से कस्टम स्क्रिप्ट लिखने के बिना

अगर किसी को कुछ बेहतर पता है तो मुझे बताएं, क्योंकि 12 मिनट की कंपाइलिंग फाइलें क्योंकि मुझे कुछ सीएसएस बदलाव करने थे, जो मेरी नजर में बेहद खराब डिजाइन है।

--- संपादित करें ---

मैगेंटो 2 में ग्रंट को बांधा गया है और यह सीएसएस / लेस फ़ाइलों को ताज़ा करता है यदि आप इसे कॉन्फ़िगर करने के लिए समय लेते हैं तो आसानी से आसान हो जाता है। अधिकांश फाइलें इस प्रकार हैं .sample फाइलें सिर्फ .sample फ़ाइल एक्सटेंशन को हटाती हैं, theme.js फ़ाइल को / dev / टूल्स / ग्रंट / कॉन्फिग फ़ोल्डर में कॉन्फ़िगर करती हैं। फिर जब आपको अपनी LESS फ़ाइलों को ताज़ा करने की आवश्यकता होती है, तो आप कमांड लाइन से केवल ग्रंट को कम चलाते हैं: - theme--।

संसाधन: http://devdocs.magento.com/guides/v2.0/frontend-dev-guide/css-topics/css_debug.html


Php बिन / Magento सेटअप प्रदान करना बंद करें: स्थैतिक-सामग्री: परिनियोजन विधि, डेवलपर मोड में Magento के पास
सहानुभूति है

ओह और मैन्युअल रूप से फ़ोल्डर्स को हटाना, .htaccess फ़ाइलों और अन्य को असंबंधित हटाना, और इसे फिर से बनाने के लिए मजबूर करना बेहतर है ??? मैंने ग्रंट का उपयोग करने के बारे में एक टिप्पणी जोड़ दी, क्योंकि बस आपके स्टोर को डेवलपर मोड में ले जाने से सभी सीमंलिंक को पलटा नहीं जाता है और पृष्ठ पुनः लोड पर आपके सीएसएस को ताज़ा करता है।
वलियर

6

चलाने के लिए मत भूलना grunt exec:theme, grunt less:themeकमांड्स जहां themeआप विषय themes.jsको ग्रंट के कॉन्फिग फोल्डर से फाइल में घोषित करते हैं (यह सब डेवलपर गाइड में है) और जब आपके पास डेवलपर मोड में मैग्नेटो है, तो आपको स्थिर तैनाती कमांड को नहीं चलाना चाहिए, Magento2के साथ काम करता हैSymlinks


1
"जब आपके पास डेवलपर मोड में Magento है तो आपको स्थिर तैनाती कमांड नहीं चलाना चाहिए" <- यह मेरे लिए बेहद मददगार था। धन्यवाद! मैंने सिर्फ पब / स्टैटिक डायरेक्टरी (.htaccess के अलावा) की सामग्री को डिलीट कर दिया, पेज को रिफ्रेश किया और मेरी css फाइलों के लिए सहानुभूति स्वतः उत्पन्न हो गई। अब मैं उन्हें मक्खी पर संपादित कर सकता हूं। कौन कहा Magento 2 देव के अनुकूल नहीं है ?! बस मुझे यह जानने की जरूरत है कि मैं इसका उपयोग कैसे करूं।
Rooster242

1
हाय शुक्रिया दोस्त, कम ग्रंट: डिफॉल्ट से समस्या हल हो गई
यूसुफ इब्राहिम

6

इन आदेशों को अपने Magento रूट फ़ोल्डर पर चलाएँ :

alias mage="php -d memory_limit=-1 -f bin/magento"

chmod -R 775 pub/static/ var/ pub/media/ &&
rm -rf var/view_preprocessed/ var/cache/ var/page_cache/ var/tmp/ var/generation/ pub/static/frontend/ ;
mage cache:flush &
mage indexer:reindex &
mage setup:upgrade &&
mage setup:static-content:deploy ; 
mage setup:db-data:upgrade &&
mage dev:source-theme:deploy &&
chmod -R 775 pub/static/ pub/media/ var/

कभी भी पृष्ठभूमि में ex
सर्जेई

क्या यह मैजेंटो 2 प्रश्न के उत्तर में ये मैगनेटो 1 कमांड हैं?
बैरी

कोई Magento 1 कमांड नहीं हैं, वे Magento 2 से हैं
राफेल कोरसा गोम्स

6

इस प्रश्न के बारे में एक महत्वपूर्ण बात यह है कि अधिकांश उत्तर विशेष रूप से इंगित नहीं करते हैं। आपके मामले में (आपके द्वारा उपयोग किए जा रहे सेट के साथ) आपके सीएसएस परिवर्तन का कारण तब नहीं उठाया जाता है जब आप सीएसएस को pub/staticफ़ोल्डर में पुनः प्राप्त करते हैं, तो आप var/view_preprocessedनिर्देशक की सामग्री को हटा नहीं रहे हैं । इस निर्देशिका के अंदर आपके सीएसएस के कैश्ड संस्करण होते हैं जो pub/staticजब आप php bin/magento setup:static-content:deployकमांड चलाते हैं तो फ़ोल्डर में खिंच जाते हैं।

इसलिए जब आप recompile करते हैं, तो Magento पहले var/view_preprocessedकैश की गई CSS के लिए फ़ोल्डर को देखेगा । यदि यह फ़ोल्डर खाली है, तो यह थीम फ़ाइलों को देखेगा और संकलन के लिए उस CSS को खींच लेगा।

ये सेटिंग कॉन्फ़िगर करने योग्य हैं, इसलिए आपके गंतव्य पर जाने के लिए बहुत सारे रास्ते हैं जो आपके द्वारा आवश्यक पथ को बदल देंगे। लेकिन अपने विशिष्ट सेटअप के समाधान के लिए:

  1. pub/staticफ़ोल्डर से फ़ाइलें निकालें :rm -rf pub/static/*

  2. var/view_preprocessedफ़ोल्डर से फ़ाइलें निकालें :rm -rf var/view_preprocessed/*

  3. पब स्टैटिक फोल्डर को रीसम्पाइल करें: php bin/magento setup:static-content:deploy

  4. कैश साफ़ करें इसे चालू किया गया है: php bin/magento cache:clean

  5. ब्राउज़र को रिफ्रेश करें।


1
अच्छा होगा अगर magento2 डेवलपर मोड में उन प्रभावित फ़ाइलों के लिए सहानुभूति बनायेगा, तो उन मॉड्यूल फ़ाइलों में परिवर्तन होगा जहाँ मक्खी दिखाई दे रही है
roman204

यह करता है, लेकिन मैं कब और कैसे के आसपास मेरे सिर नहीं मिला है, ओएस मैं इस जवाब में नहीं लाया। वैश्विक कॉन्फ़िग फ़ाइल हैं जो इसे आपकी di.xml ( app/etc/di.xml) फ़ाइल में सेट कर सकती हैं । लेकिन मुझे परीक्षण के दौरान मिश्रित परिणाम मिले हैं। दूसरे उत्तर में यहाँ कुछ और है: magento.stackexchange.com/questions/116605/…
मंडलियों

5

वह फ़ोल्डर निकालें जिसमें आपका थीम पब / स्टैटिक / फ्रंटएंड
क्लियर कैश हो।
आप स्टाइलशीट लागू करने के लिए ग्रंट का उपयोग कर सकते हैं। यहाँ पढ़ें


क्यों अलग संस्करण के साथ पुनर्जीवित ??? मेरे पास एक मुद्दा है जिसमें फ़ाइल संस्करण मेल नहीं खाता है। magento.stackexchange.com/questions/94502/…
Magento2 Devloper

5
  1. पब स्टैटिक निकालें।
  2. pub/static777 अनुमति दें
  3. कैश को साफ़ करें।
  4. Daud: php bin/magento setup:static-content:deploy

आपको नई सीएसएस दिखाई देगी।

ध्यान दें:

उचित फ़ोल्डर और फ़ाइल अनुमति दें।

उम्मीद है इससे आपको मदद मिलेगी।


"आप नई सीएसएस देखेंगे।" - मैं नहीं था लेकिन धन्यवाद
बैरी

4

क्या आप केवल व्यवस्थापक पैनल में स्थिर कैश फ्लश नहीं कर सकते और फिर

run php bin/magento setup:static-content:deploy

1

सुनिश्चित करें कि आप डेवलपर मोड का उपयोग कर रहे हैं।

फिर निम्नलिखित कोड निष्पादित करें:

chmod -R 777 var generated pub/static
grunt exec:default
grunt less:your_theme_name

फ़्रंटएंड पृष्ठ को ताज़ा करें, इन चरणों ने मेरी समस्या को हल किया।


अच्छा, यह वास्तव में मेरी मदद के लिए धन्यवाद
Yoesoff

0

हालाँकि, आप सेटअप कमांड में ध्वज -fया --forceध्वज जोड़ सकते हैं ।

उदाहरण:

php bin/magento setup:static-content:deploy -f

0

मैं यहाँ अपनी ज्ञान की बूंद गिरा रहा हूँ।

मैं एक cache_fly.shbash स्क्रिप्ट का उपयोग करता हूं जो मूल रूप से करता है:

#!/bin/bash
start=`date +%s%N`
./magento setup:upgrade && \ 
./magento cache:flush && \ 
./magento setup:static-content:deploy -f
end=`date +%s%N`
runtime=$(bc <<< "scale=9;($end-$start)/1000000000")
echo "" && echo "" && echo -e "\e[34mTOTAL EXECUTION TIME: \e[1m\e[93m$runtime\e[0m"

नोट: मैंने यह दिखाने के लिए एक इको जोड़ा है कि मैंने अपने जीवन का कितना समय बर्बाद किया है, मैं इसे चलाने के लिए इंतजार कर रहा हूं। डॉकटर कंटेनर के अंदर एक ही चीज़ ./magentoको करने php bin/magentoया कॉल करने के लिए एक स्क्रिप्ट भी है , यदि docker का उपयोग किया जाता है तो आप उसे अपना बना सकते हैं या इंगित कर सकते हैं php bin/magentoलेकिन यदि आप इसे पढ़ रहे हैं तो आपको पता होना चाहिए कि मैं किस बारे में बात कर रहा हूँ, यदि नहीं, तो कृपया पूछें मदद के लिए।


0

मेरे मामले के लिए थोड़ा अनुकूलन

#!/bin/bash
start=`date +%s%N`
chmod -R 775 pub/static/ var/ pub/media/ && \
rm -rf var/view_preprocessed/* var/cache/* var/page_cache/* var/tmp/* var/generation/* pub/static/frontend/* && \
./magento cache:flush && \
./magento setup:upgrade && \
./magento cache:clean && \
./magento s:s:d es_ES en_US -f && \
./magento setup:di:compile && \
chmod -R 775 pub/static/ pub/media/ var/
end=`date +%s%N
runtime=$(bc <<< "scale=9;($end-$start)/1000000000")
echo "" && echo "" && echo -e "\e[34mTOTAL EXECUTION TIME: \e[1m\e[93m$runtime\e[0m"
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.