2013-07-30 2 views
5

मेरी prod पर्यावरण के लिए मैं के रूप में (config_prod.yml) इस प्रकार कॉन्फ़िगर किया गया UglifyCSS फिल्टर का उपयोग करना चाहते हैं:Assetic डंप मेरी Symfony अनुप्रयोग में uglifycss नहीं मिल रहा है

assetic: 
    filters: 
     uglifycss: 
      node: /usr/bin/env node 
      bin: /usr/local/bin/uglifycss 
      apply_to: "\.css$" 

लेकिन जब भी मैं

php app/console assetic:dump --env=prod --no-debug 
चलाने

मैं इस त्रुटि संदेश मिलता है:

[Assetic\Exception\FilterException]                              
    An error occurred while running:                               
    '/usr/local/bin/node' '/usr/bin/uglifycss' '/tmp/inputtyeA2H'                        

    Error Output:                                    

    node.js:201                                    
      throw e; // process.nextTick error, or 'error' event on first tick                    
       ^                                   
    Error: Cannot find module '/usr/bin/uglifycss'                           
     at Function._resolveFilename (module.js:332:11)                          
     at Function._load (module.js:279:25)                             
     at Array.0 (module.js:479:10)                               
     at EventEmitter._tickCallback (node.js:192:40) 

तो जाहिर है Asseticमें uglifycss की तलाश में हैहालांकि मैंने इसे एक अलग पथ, /usr/local/bin का उपयोग करने के लिए कॉन्फ़िगर किया। क्या किसी को पता है कि यहाँ क्या हो रहा है?

+0

आप कभी भी इस समाधान हो गया? मेरी भी यही समस्या है। मैं निष्पादन योग्य/usr/bin/uglifyjs को symlinking द्वारा इसे ठीक कर सकता हूं, लेकिन मैं अपने ऐप/संसाधन निर्देशिका में कुछ स्थानीय चाहता था ताकि मैं इसे संस्करण नियंत्रण के साथ तैनात कर सकूं। – Fodagus

+0

नहीं, अब तक कोई समाधान नहीं मिला है। हालांकि मुझे यह मानना ​​है कि मैंने पिछले हफ्तों में इसकी कोशिश नहीं की है। शायद यह एक एसेटिक बग है जिसे तय किया गया है। – acme

+0

यह मुझे परेशान कर रहा है, इसलिए मैं स्रोत को डिबगिंग/डाइविंग कर रहा हूं। अब तक मुझे यह ऐप/कैश/प्रोड/ऐपप्रोडप्रोजेक्ट कंटैनर.एफ़पी: $ यह-> सेवाएं ['estateic.filter.uglifyjs2'] = $ instance = new \ Assetic \ Filter \ UglifyJs2Filter ('/ usr/bin/uglifyjs ','/usr/bin/node '); फ़िल्टर को हमारे द्वारा .yml फ़ाइल में सेट किए गए मानों को पारित नहीं किया जा रहा है, इसलिए जब सेवा उत्पन्न होती है तो उसे चाबियाँ नहीं मिलती हैं। अभी भी देख रहे हैं ... – Fodagus

उत्तर

1

यदि आपने uglifycss की बाइनरी स्थापित की है, तो नोड के पथ को निर्दिष्ट करने की कोई आवश्यकता नहीं है।

मैं यकीन है कि

assetic: 
    filters: 
     uglifycss: 
      bin: /usr/local/bin/uglifycss 
      apply_to: "\.css$" 

चाल करना चाहिए हूँ।

+1

मैंने पहले से ही एक कोशिश की है, यह भी काम नहीं करता है। पथ बस अनदेखा किया जाता है। ऐसा लगता है जैसे यह इस कॉन्फ़िगरेशन फ़ाइल का बिल्कुल उपयोग नहीं करता है, हालांकि मैं डबल- और ट्रिबबल-सबकुछ जांचता हूं। – acme

7

मेरे अंतिम विन्यास काम करने के लिए प्रकट होता है जो इस प्रकार की है:

  1. config_prod

    app/config/config_prod.yml 
    assetic: 
        filters: 
         uglifycss: 
         bin: %kernel.root_dir%/Resources/node_modules/.bin/uglifyjs 
         node: null 
         apply_to: '*.css$' 
    
  2. न बदसूरत बनाना बारे में config.yml में कुछ भी डाल सेट करें। इन config_ में छोड़ देता है (env) .yml फ़ाइलों

  3. कैश के पुनर्निर्माण

    app/console cache:clear --env=prod --no-debug 
    
  4. डंप आस्तियों

    app/console assetic:dump --env=prod --no-debug 
    

मैं यह कैसे लगा आउट:

मुझे यह समस्या थी और फाई में कामयाब रहा एक्स यह मुझे लगता है कि मेरी सेटअप कभी तो थोड़ा अलग हो सकता है, में मैं एप्लिकेशन/config.yml और एप्लिकेशन/config_prod.yml भर में मेरी बदसूरत करना विन्यास विभाजित हो गए थे

मेरे विन्यास के समान था: http://symfony.com/doc/current/cookbook/assetic/uglifyjs.html :

app/config/config.yml 
assetic: 
filters: 
    uglifycss: 
     bin: %kernel.root_dir%/Resources/node_modules/.bin/uglifyjs 

app/config/config_prod.yml 
assetic: 
filters: 
    uglifycss: 
     apply_to: "*.css$" 

जो मैंने पाया वह था, सिम्फनी कॉन्फ़िगर.इम्ल में मेरे चर को अनदेखा कर रहा था जब उसने कैश बनाया था। आप देख सकते हैं कि ऐप/कैश/प्रोड/ऐपप्रोडप्रोजेक्टकॉन्टेनर.एफ़पी और 'uglifycss' के लिए खोज कर यह क्या पाता है। मेरा इस तरह देखा:

protected function getAssetic_Filter_UglifycssService() 
{ 
    $this->services['assetic.filter.uglifycss'] = $instance = new \Assetic\Filter\UglifyCssFilter('/usr/bin/uglifycss', '/usr/bin/node'); 

जब मैं अपने बिन चले गए: चर config_prod.yml और पुनर्निर्माण कैश "कैश: स्पष्ट" करने के लिए, यह सेटिंग पाया जाता है और में हालांकि, नोड अभी भी रूप में पारित किया जा रहा था यह खींच लिया। '/ usr/bin/नोड'। Uglify फ़िल्टर के लिए स्रोत को देखते हुए, यह नोड वेरिएबल शून्य होने पर जस्ट यूग्लीफाइड पथ का उपयोग करेगा। तो, uglifycss की बाइनरी का उपयोग करने के लिए, बस नोड को शून्य पर सेट करें।

+0

नोट: आप दोनों फाइलों में कॉन्फ़िगरेशन कर सकते हैं, यह सिम्फनी कॉन्फ़िगरेशन को विलय नहीं करेगा और पर्यावरण विशिष्ट कॉन्फ़िगरेशन आपकी पिछली कॉन्फ़िगरेशन को ओवरराइट करेगा। – phoops

1

बस

ln -s /usr/local/bin/uglifycss /usr/bin/uglifycss 

इतना गंदा नहीं सिमलिंक बनाना =) और 100% काम करता है =)

संबंधित मुद्दे