कम्पास sprites प्रस्तुत करने के लिए chunky_png का उपयोग करता है। यह नई छवि sprites डाउनलोड करने के लिए कैश को मजबूर करने के लिए फ़ाइल के अंत में एक हैश जोड़ता है। क्या इस कैश को बंद करने का कोई तरीका है?कम्पास के उत्पन्न स्प्राइट छवि फ़ाइल नाम से हैश को कैसे हटाएं?
उत्तर
दुर्भाग्य asset_cache_buster :none
विकल्प फ़ाइल नाम के अंत में हैश जोड़ने निष्क्रिय नहीं होती।
जैसा कि मैंने कुछ समय पहले (फ्रेंच में) लिखा था, कम्पास के पास कैश हैश बस्टर को अक्षम करने का कोई तरीका नहीं है, लेकिन मैं a solution का प्रस्ताव करता हूं।
अपने विन्यास फाइल में (जैसे config.rb
) जोड़ने के निम्नलिखित लाइनों:
# Make a copy of sprites with a name that has no uniqueness of the hash.
on_sprite_saved do |filename|
if File.exists?(filename)
FileUtils.cp filename, filename.gsub(%r{-s[a-z0-9]{10}\.png$}, '.png')
end
end
# Replace in stylesheets generated references to sprites
# by their counterparts without the hash uniqueness.
on_stylesheet_saved do |filename|
if File.exists?(filename)
css = File.read filename
File.open(filename, 'w+') do |f|
f << css.gsub(%r{-s[a-z0-9]{10}\.png}, '.png')
end
end
end
अब, compass clean
का उपयोग करता है उत्पन्न फ़ाइलों को हटाने के लिए और compass compile
साथ एक संकलन पुन: प्रारंभ होता।
उदाहरण के लिए, आप images/icons-scb1e5456d5.png
फ़ाइल औरimages/icons.png
फ़ाइल प्राप्त करते हैं। स्टाइलशीट में, स्प्राइट्स के सभी संदर्भ अब हैश के बिना संस्करण को इंगित करते हैं।
कम्पास द्वारा संकलित समय अनुकूलित करने के लिए फ़ाइल को हैश प्रदान करना सुनिश्चित करें।
इसके लिए धन्यवाद, मैंने व्यक्तिगत रूप से FileUtils के बजाय FileUtils.mv का उपयोग करना चुना है।सीपी ताकि होल्ड फ़ाइल – isNaN1247
के आसपास लटका नहीं है, तो इसका उपयोग grunt-contrib-sass के साथ करना on_stylesheet_saved ब्लॉक को ट्रिगर नहीं करता है, जिससे सीएसएस पृष्ठभूमि गुणों को फ़ाइल को संदर्भित करने के बजाय हैश के साथ संदर्भित किया जाता है। ग्रंट-कॉन्ट्रिब-कंपास के साथ इसका उपयोग करने से यह ट्रिगर हुआ। – yuvilio
@yuvilio यह हुक कम्पास द्वारा प्रदान किया जा रहा है और सास में मौजूद नहीं है। अनुस्मारक के लिए Thx! – piouPiouM
सेट asset_cache_buster :none
अपने config.rb में के रूप में documented in their configuration reference
इसे और अधिक अपवित्र की आवश्यकता है –
स्वीकार्य उत्तर होना चाहिए। –
यह समाधान हैस को फ़ाइल नाम को स्प्राइट करने के लिए हैश को पोस्टफ़िक्स के रूप में डालने से रोकता नहीं है, दिए गए प्रश्न में कोई समस्या क्या है। – s3m3n
मैं स्प्राइट के साथ परीक्षण नहीं किया है, लेकिन इस replace-text-with-dimensions
साथ काम करता है, उदाहरण के लिए:
config.rb:
# disable asset cache buster
asset_cache_buster do |http_path, real_path|
nil
end
बेहतर समाधान पर मिले किसी अन्य रूप में पाया जा सकता है similar question।
क्योंकि यह बेहतर है:
- स्क्रिप्ट पैदा स्प्राइट से पहले का नाम बदल कर - के बाद नहीं।
- बिंदु 1 के कारण
.css
ऑटो जेनरेट की गई फ़ाइल को शायद ही कभी बदलने की आवश्यकता नहीं है। यह शुरुआत से सही नाम के साथ उत्पन्न हुआ है। - स्वीकृत समाधान हैश के साथ उत्पन्न स्प्राइट के
cp
(प्रतिलिपि) बनाता है और यह फ़ाइल सिस्टम/रेपो में डुप्लिकेट के रूप में रहता है जो काफी खराब है। इसके अतिरिक्त यह अभी भी स्थानीय रेपो के साथ बदला गया है ताकि आप दो समान फाइलें कर सकें। सॉल्यूशनmv
को एक साफ़ करने के लिए जेनरेट हैश फ़ाइल नाम बदलने के लिए कर सकता है, लेकिन इस मामले में हर बार जब आप इसे.scss
फ़ाइल में उपयोग करते हैं तो स्प्राइट उत्पन्न किया जाएगा, इसलिए यह भी बदतर है।
स्प्राइट हैश ब्राउज़र कैश बस्टिंग के लिए नहीं है (हालांकि इसका प्रभाव है) लेकिन इसलिए कम्पास जेनरेट की गई फ़ाइल की पहचान कर सकता है। – sam