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?
cevap
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.
Bunun için ben kişisel olarak FileUtils yerine FileUtils.mv kullanmayı seçtim.cp bu yüzden tutma dosyası – isNaN1247
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
@yuvilio bu kanca Compass tarafından sağlanmaktadır ve Sass'da bulunmamaktadır. Hatırlatıcı için teşekkürler! – piouPiouM
Seti asset_cache_buster :none
bunun daha fazla desteğe ihtiyacı var –
Kabul edilen cevap olmalı. –
Bu çözüm, Compass'in belirli bir sorunda sorun olan dosya adını yazım için postfix olarak karma yazmasını engellemez. – s3m3n
Ben sprite ile test etmedim ama bu örneğin replace-text-with-dimensions
çalışır:
# disable asset cache buster
asset_cache_buster do |http_path, real_path|
nil
end
iyi çözüme Bulundu başka bulunabilir: config.rb
similar question., çünkü daha iyi:
- Senaryo üreten sprite önce adını değiştirir - sonra değil.
- 1. noktadan dolayı
.css
otomatik oluşturulan dosyayı pek değiştirmeye gerek yoktur. Başından itibaren doğru isim ile üretilir. - 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çinmv
yapabilir, ancak bu durumda,.scss
dosyasında kullandığınız her zaman sprite oluşturulur, bu daha da kötüsüdür.
Sprite hash, tarayıcı önbellek bozmayı (bu etkiye sahip olsa da) değil, ancak Compass oluşturulan dosyayı tanımlayabilir. – sam