2012-01-18 9 views
13

मैं इस लेख के सबसे निचले भाग पर गाइड का पालन किया: http://symfony.com/doc/current/cookbook/assetic/asset_management.htmlउत्पाद के विभिन्न फ़ाइल नामों के लिए सिम्फनी 2 संपत्ति संकलन कैसे करें?

मैं इस कोड है: अगर मैं sf assetic:dump --env=prod चलाने

{% javascripts 
     ... 

     output='js/dist/dist.js' 
    %} 
    <script src="{{ asset_url }}"></script> 
    {% endjavascripts %} 

अब यह संकलित फ़ाइल ठीक से पैदा करता है। हालांकि, मैं इसे एक यादृच्छिक नाम (या टाइमस्टैम्प) उत्पन्न करना चाहता हूं ताकि क्लाइंट-साइड ब्राउज़र कैश समस्या से बचा जा सके। अभी यह हमेशा dist.js फ़ाइल बनाता है जो कैश हो जाता है और जब मैं अपना कोड अपडेट करता हूं तो उपयोगकर्ता अंतर (या त्रुटियां प्राप्त नहीं करेंगे) देखेंगे।

क्या इसे dist12345678.js जैसा बनाने का कोई तरीका है? Symfony डॉक्स में वर्णित के रूप में या तो बाहर छोड़ आउटपुट फ़ाइल का नाम (यह तो एक स्वत: जनरेट की हैश बदलेगी) या संपत्ति के संस्करणों का उपयोग,:

उत्तर

7
+0

यह कोई असर दिखाई नहीं देता। मैंने कैश को साफ़ कर दिया है और 'एसेटिक: डंप --env = prod' चलाया है और प्रोड पर्यावरण के खिलाफ कोशिश की है और मुझे वहां कोई भी' v0.0.1' नहीं दिखाई देता है। – Tower

+1

rFactor, चलाएं "कैश: clear --env = prod –

+5

आउटपुट फ़ाइल नाम छोड़ना काम नहीं करता है, हमेशा" 8662e4b.js "जैसा ही नाम उत्पन्न करता है। संपत्ति संस्करण अच्छा काम करता है। –

3

मैं एक कर रहे हैं एक परियोजना के लिए एसेटिक के साथ बहुत प्रयोग कर रहा है, और मैं जो भी पूछ रहा हूं उसे करने के लिए मैंने एक तरह से ठोकर खाई। यदि "आउटपुट" स्ट्रिंग में "*" होता है, तो इसके लिए एक त्वचीय रूप से उत्पन्न मनमानी स्ट्रिंग को प्रतिस्थापित किया जाता है।

उदाहरण के लिए, मैं एक टेम्पलेट में निम्नलिखित है (PHP, हम टहनी उपयोग नहीं कर रहे):

<?php foreach($view['assetic']->javascripts(array('@MyBundle/Resources/public/js/page.js'), array(), array('output' => 'js/compiled/page_*.js')) as $url): ?> 
    <script type="text/javascript" src="<?php echo $view->escape($url) ?>"></script> 
<?php endforeach; ?> 

<?php foreach($view['assetic']->stylesheets(array('@MyBundle/Resources/public/css/page.css'), array(), array('output' => 'css/compiled/page_*.css')) as $url): ?> 
    <link rel="stylesheet" href="<?php echo $view->escape($url) ?>" /> 
<?php endforeach; ?> 

जब मैं एप्लिकेशन/assetic कंसोल चलाएँ: डंप, यह उत्पन्न करता है/वेब/सीएसएस/संकलित /page_8e8fcb3.css और /web/js/compiled/page_241b4e5.js।

+0

काम करता है मैंने एक तारांकन रखने की कोशिश की, लेकिन ऐसा लगता है कि यह हटा दिया जाता है और यादृच्छिक स्ट्रिंग द्वारा प्रतिस्थापित नहीं किया जाता है। क्या यह एसेटिक का हिस्सा है या आपने किया अपने आप पर कुछ करें? – Tower

+0

मैंने अपने आप से कुछ नहीं किया है, और मेरा कोड बिल्कुल मेरे बंडल के नाम को छोड़कर ऊपर दिखाया गया है। क्या यह संभव है कि आपके twig टेम्पलेट को php में संकलित करने में कुछ खो जाए? I कल्पना नहीं कर सकता कि यह मामला क्यों होगा, लेकिन मेरे लिए कुछ और नहीं होता है जो बताएगा कि मेरे सिस्टम में तारकीय का अलग-अलग तरीके से क्यों व्यवहार किया जा रहा है। – AmericanUmlaut

+0

एक अलग संस्करण हो सकता है। आपकी संपत्ति क्या है आईसी संस्करण? – Tower

1

बेहतर दृष्टिकोण https://github.com/symfony/AsseticBundle/pull/119#issuecomment-28877145

है आप मिल जाएगा:

app/console assetic:dump --env=prod --no-debug 
Dumping all prod assets. 
Debug mode is off. 

[file+] /web/assets/static-fe1927d.css 
[file+] /web/assets/static-6e92057.js 
+3

आपको इसमें और स्पष्टीकरण जोड़ना चाहिए ... –

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