如何禁止 Compass 对生成的 Sprite 图片名字添加随机字符?

发布于 2022-08-26 18:50:23 字数 237 浏览 14 评论 0

Compass 想将部分小图片拼成一张 sp-icons.png,但 compass 每次生成的图片名字都会加上一个随机字符(如:sp-icons-sa853b2687c.png),官方文档没有找到相关内容,不知道是不是我漏看了还是真的没有呢?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

屋檐 2022-09-02 18:50:23

很久没有用 Compass 了,不知道 asset_cache_buster :none 这个选项设置现在是否能阻止 hash string 的生成。以前是不行的,但是有人提交了 issue,这么久过去应该可以了吧?

若是还不行也没关系,幸运的是 Compass 提供了一个 callback: on_sprite_saved,因此我们可以利用它修改生成的文件名,比如这样:

# 这里做了一个 copy 而不是直接重命名;你可以用 FileUtils.mv 直接重命名
on_sprite_saved do |filename|
  if File.exists?(filename)
    FileUtils.cp filename, filename.gsub(%r{-s[a-z0-9]{10}\.png$}, '.png')
  end
end

# 除此之外,样式表里自动生成的声明也要修改一下
on_stylesheet_saved do |filename|
  if File.exists?(filename)
    css = File.read filename
    File.open(filename, 'w+') do |buffer|
      buffer << css.gsub(%r{-s[a-z0-9]{10}\.png}, '.png')
    end
  end
end

在我的例子中,我是用的 FileUtils.cp 而不是 FileUtils.mv,因此在你 $ compass compile 之前,需要来一次 $ compass clean 把原本清除掉。

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文