2013-01-05 4 views
7

最近、SassとCompassを使ってCSSスプライシングを行っています。Compass/Sassでファイル名にスプライトファイル名を追加したランダムな文字列を削除します。

ただし、ファイル名には常にランダムな文字列が付加されます。例えば。 アイコン-s5eb424578c.png。このランダムな文字列を追加したくないのは、新しいCSSファイル&を新しいスプライトイメージに変更するたびにアップロードする必要があるからです。

だから、このランダムな文字列を追加しているCompass gemディレクトリ内のRubyやその他の設定ファイルを知っている人はいますか?それから私はそのビットのためにコードをコメントアウトすることができます。公式の変数がない場合を除き、コンパス内でこの文字列を追加したくないということを伝えるために設定することはできますか?

ありがとうございました。プロジェクト設定ファイルの

+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 

クレジットのようなものを入力して、あなたのconfig.rbにこれらの行を追加しようとここにHow to remove the hash from Compass's generated sprite image filenames?

17

を行く:

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 

Compass 0.12.2 (Alnilam)

と私の作品
+2

このソリューションは最初のものよりずっと優れています。生成する前に名前を変更します.cssを直接変更するのではありません。 – s3m3n

関連する問題