7

私は最近、Sass で Compass を使用して CSS スプライトを実行しています。これは非常に便利です。

ただし、ファイル名には常にランダムな文字列が追加されます。例: icons-s5eb424578c.png。また、変更があるたびに新しい CSS ファイルと新しいスプライト イメージの両方をアップロードする必要があるため、このランダムな文字列を追加したくありません。

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

これについて何か助けてくれてありがとう。

4

2 に答える 2

17

次の行を に追加してみてください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

私のために働くCompass 0.12.2 (Alnilam)

于 2013-05-10T08:50:14.687 に答える
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

クレジットはここに入るCompass の生成されたスプライト イメージ ファイル名からハッシュを削除するにはどうすればよいですか?

于 2013-01-30T14:36:16.580 に答える