2013-01-05 6 views
7

Niedawno używałem Compass z Sassem, aby wykonać trochę sprasowania CSS, ponieważ jest to niezwykle użyteczne.Usuń losowy ciąg dodawany do sprite'a przy pomocy kompasu/Sassa

Jednak nazwa pliku zawsze zawiera losowy ciąg znaków. Na przykład. icons-s5eb424578c.png. Nie chcę, aby ten losowy ciąg był dołączany, ponieważ oznacza to, że muszę przesłać zarówno nowy plik CSS & nowy obraz ikonki za każdym razem, gdy nastąpi zmiana.

Więc, czy ktoś wie, który Ruby lub inny plik konfiguracyjny w katalogu gem Gem, który dodaje ten losowy ciąg? Wtedy mogę po prostu skomentować kod dla tego bitu. Chyba że brakuje mi oficjalnej zmiennej, którą mogę ustawić w kompasie, aby powiedzieć, że nie chcę, aby ten ciąg był dołączony?

Z góry dziękuję za pomoc w tej sprawie.

+0

Sprawdź, czy to pomaga: http: // stackov erflow.com/questions/9183133/how-to-turn-off-compass-sass-cache-busting – cimmanon

+0

Dziękujemy @cimmanon. To była właśnie odpowiedź, której szukałem. Gdybym wiedział, że to był problem z pamięcią podręczną, moje zapytania mogły mnie tam zabrać! –

+0

Nie jest przypadkowa, to [hash identyfikujący wygenerowany plik] (https://github.com/Compass/compass/issues/1374). Nie powinno się zmieniać na każdej kompilacji, tylko wtedy, gdy zmieniają się duszki. – sam

Odpowiedz

5

w pliku konfiguracyjnym projektu wprowadzić coś takiego

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 

kredytów idzie tutaj How to remove the hash from Compass's generated sprite image filenames?

17

spróbuj dodać te linie do swoich config.rb:

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 

działa na mnie z Compass 0.12.2 (Alnilam)

+2

To rozwiązanie jest o wiele lepsze niż pierwsze. Zmienia nazwy przed wygenerowaniem, a nie po zmianie css bezpośrednio. – s3m3n

Powiązane problemy