2013-01-05 8 views
7

Recentemente ho utilizzato Compass con Sass per fare dello sprite CSS, poiché è estremamente utile.Rimuovere la stringa casuale aggiunta a sprite nomefile con Compass/Sass

Tuttavia, il nome file viene sempre aggiunto con una stringa casuale. Per esempio. icons-s5eb424578c.png. E non voglio che questa stringa casuale venga aggiunta, perché significa che sono obbligato a caricare sia il nuovo file CSS & la nuova immagine sprite ogni volta che c'è una modifica.

Quindi, qualcuno sa quale Ruby o altro file di configurazione all'interno della directory gemma Compass, che sta aggiungendo questa stringa casuale? Quindi posso solo commentare il codice per quel bit. A meno che non manchi una variabile ufficiale che posso impostare all'interno di Compass per dirgli che non voglio aggiungere questa stringa?

Grazie in anticipo per qualsiasi aiuto su questo.

+0

Vedere se questo aiuta: http: // stackov erflow.com/questions/9183133/how-to-turn-off-compass-sass-cache-busting – cimmanon

+0

Grazie @cimmanon. Questa era solo la risposta che stavo cercando. Se avessi saputo che si trattava di un problema di memorizzazione nella cache, le mie query di ricerca potrebbero avermi portato lì! –

+0

Non è casuale, è [un hash che identifica il file generato] (https://github.com/Compass/compass/issues/1374). Non dovrebbe cambiare su ogni compilazione, solo quando gli sprite cambiano. – sam

risposta

5

nel file di configurazione di progetto inserire qualcosa di simile

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 

crediti va qui How to remove the hash from Compass's generated sprite image filenames?

17

tenta di aggiungere queste righe nel vostro 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 

Opere per me con Compass 0.12.2 (Alnilam)

+2

Questa soluzione è molto migliore della prima. Cambia i nomi prima di generare, non dopo aver cambiato direttamente il css. – s3m3n

Problemi correlati