7

我最近一直在使用 Compass 和 Sass 来做一些 CSS 精灵,因为它非常有用。

但是,文件名总是附加一个随机字符串。例如图标-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 回答