2013-01-05 22 views
7

के साथ फ़ाइल नाम को स्प्राइट करने के लिए जुड़ी यादृच्छिक स्ट्रिंग को हटाएं, मैं हाल ही में कुछ सीएसएस स्प्राइटिंग करने के लिए सास के साथ कम्पास का उपयोग कर रहा हूं, क्योंकि यह बेहद उपयोगी है।कम्पास/सास

हालांकि, फ़ाइल नाम हमेशा एक यादृच्छिक स्ट्रिंग के साथ जोड़ा जाता है। जैसे आइकन-s5eb424578c.png। और मैं यह यादृच्छिक स्ट्रिंग को जोड़ना नहीं चाहता, क्योंकि इसका मतलब है कि मुझे हर बार नई सीएसएस फ़ाइल & नई स्प्राइट छवि अपलोड करने की आवश्यकता होती है।

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

इस पर किसी भी मदद के लिए अग्रिम धन्यवाद।

+0

देखें कि यह मदद करता है: http: // stackov erflow.com/questions/9183133/how-to-turn-off-compass-sass-cache-busting – cimmanon

+0

धन्यवाद @cimmanon। यही वह जवाब था जिसे मैं ढूंढ रहा था। अगर मुझे पता चले कि यह एक कैशिंग मुद्दा था तो मेरे खोज प्रश्नों ने मुझे वहां पहुंचाया होगा! –

+0

यह यादृच्छिक नहीं है, यह है [जेनरेट की गई फाइल की पहचान करने वाला हैश] (https://github.com/Compass/compass/issues/1374)। यह प्रत्येक संकलन पर नहीं बदला जाना चाहिए, केवल जब sprites बदल जाते हैं। – sam

उत्तर

5
अपनी परियोजना कॉन्फ़िग फ़ाइल में

इस

asset_cache_buster :none 

# 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.mv 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?v\1') 
    end 
    end 
end 

क्रेडिट की तरह कुछ में प्रवेश यहाँ जाता है अपने config.rb में इन पंक्तियों को जोड़ने के लिए How to remove the hash from Compass's generated sprite image filenames?

17

प्रयास करें: Compass 0.12.2 (Alnilam)

साथ मेरे लिए

module Compass::SassExtensions::Functions::Sprites 
    def sprite_url(map) 
    verify_map(map, "sprite-url") 
    map.generate 
    generated_image_url(Sass::Script::String.new(map.name_and_hash)) 
    end 
end 

module Compass::SassExtensions::Sprites::SpriteMethods 
    def name_and_hash 
    "sprite-#{path}.png" 
    end 

    def cleanup_old_sprites 
    Dir[File.join(::Compass.configuration.generated_images_path, "sprite-#{path}.png")].each do |file| 
     log :remove, file 
     FileUtils.rm file 
     ::Compass.configuration.run_sprite_removed(file) 
    end 
    end 
end 

module Compass 
    class << SpriteImporter 
    def find_all_sprite_map_files(path) 
     glob = "sprite-*{#{self::VALID_EXTENSIONS.join(",")}}" 
     Dir.glob(File.join(path, "**", glob)) 
    end 
    end 
end 

वर्क्स

+2

यह समाधान पहले की तुलना में बहुत बेहतर है। यह उत्पन्न करने से पहले नाम बदलता है, सीएसएस को सीधे बदलने के बाद नहीं। – s3m3n

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

  • कोई संबंधित समस्या नहीं^_^