2013-01-05 20 views
7

我最近一直在使用Compass和Sass來做一些CSS spriting,因爲它非常有用。用Compass/Sass刪除附加到sprite文件名的隨機字符串

但是,文件名總是附加一個隨機字符串。例如。 icons-s5eb424578c.png。而且我不希望這個隨機字符串被追加,因爲這意味着每次發生更改時都需要上傳新的CSS文件&新的精靈圖像。

那麼,有沒有人知道在Compass gem目錄下的哪個Ruby或其他配置文件,即追加這個隨機字符串?然後,我可以將該代碼註釋掉。除非我錯過了我可以在Compass中設置的官方變量來告訴它,我不希望這個字符串被附加?

在此先感謝您的幫助。

+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)。它不應該在每次編譯時都改變,只有當精靈發生變化時。 – 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 

學分這裏去How to remove the hash from Compass's generated sprite image filenames?

17

嘗試將這些行添加到您的config.rb:與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

這個解決方案比第一個好得多。它在生成之前更改名稱,而不是直接更改css之後。 – s3m3n

相關問題