2012-02-07 5 views
14

Pusula sprite'ları işlemek için chunky_png kullanır. Yeni görüntü spritelarını indirmek için önbellekleri zorlamak için dosyanın sonuna bir karma ekler. Bu önbellek bozmayı kapatmanın bir yolu var mı? senin config.rb içindeCompass'ın oluşturduğu hareketli görüntü dosya adlarından karma nasıl kaldırılır?

+0

Sprite hash, tarayıcı önbellek bozmayı (bu etkiye sahip olsa da) değil, ancak Compass oluşturulan dosyayı tanımlayabilir. – sam

cevap

23

documented in their configuration reference maalesef asset_cache_buster :none seçenek dosyanın sonuna karma ekleyerek devre dışı bırakmaz.

Birkaç kez önce (Fransızca) yazdığım gibi, Compass'ın önbellek karmaşasını devre dışı bırakmasının bir yolu yok, ama ben a solution'u öneriyorum. Yapılandırma dosyasında
(örn config.rb) ekleyin aşağıdaki satırları: Artık

# 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 

, oluşturulan dosyaları kaldırmak için compass clean kullanır ve compass compile ile bir derleme yeniden başlatır.
Örneğin, images/icons-scb1e5456d5.png dosya ve a images/icons.png dosyasını edinin. Stil sayfalarında, sprite'ların tüm referansları artık karma içermeyen versiyona işaret ediyor.

Dosyanın Compass ile derleme sürelerini en iyi duruma getirmek için sağlanan bir hash sağladığından emin olun.

+0

Bunun için ben kişisel olarak FileUtils yerine FileUtils.mv kullanmayı seçtim.cp bu yüzden tutma dosyası – isNaN1247

+1

etrafında asılı kalmaz Bunu grunt-contrib-sass ile kullanma, on_stylesheet_saved bloğunu tetiklemiyor gibi görünmüyor, css arka plan özelliklerini dosyaya hash yerine bir hash değerine gönderme yapıyor. Bununla birlikte, grunt-contrib-pusula ile kullanmak onu tetikledi. – yuvilio

+1

@yuvilio bu kanca Compass tarafından sağlanmaktadır ve Sass'da bulunmamaktadır. Hatırlatıcı için teşekkürler! – piouPiouM

22

Seti asset_cache_buster :none

+1

bunun daha fazla desteğe ihtiyacı var –

+3

Kabul edilen cevap olmalı. –

+4

Bu çözüm, Compass'in belirli bir sorunda sorun olan dosya adını yazım için postfix olarak karma yazmasını engellemez. – s3m3n

4

iyi çözüme Bulundu başka bulunabilir: config.rb

similar question.

, çünkü daha iyi:

  1. Senaryo üreten sprite önce adını değiştirir - sonra değil.
  2. 1. noktadan dolayı .css otomatik oluşturulan dosyayı pek değiştirmeye gerek yoktur. Başından itibaren doğru isim ile üretilir.
  3. Kabul edilen çözüm, oluşturulmuş sprite'ın hash ile cp (kopyasını) oluşturur ve dosya sistemi/repo dosyasında yinelenen dosya olarak kalır ve bu da oldukça kötüdür. Ayrıca, yerel repo ile değişmiş gibi görünüyor, böylece iki özdeş dosya da işliyorsunuz. Çözüm, bir tane temizlemek için oluşturulan karma dosya adını değiştirmek için mv yapabilir, ancak bu durumda, .scss dosyasında kullandığınız her zaman sprite oluşturulur, bu daha da kötüsüdür.