有没有办法在SASS中执行文件rev缓存清除?这里的答案似乎可以使用罗盘: SASS Image CSS Cache Busting (via Compass)
但我还没有找到任何方法只使用SASS。有没有办法让SASS从文件系统获取文件修改信息,并附加到图像路径?
我宁愿不附加查询字符串 - 相反,我认为这是一种更好的方法。
答案 0 :(得分:1)
谢谢Dawn在这段时间之后一直在玩!我已经想到了这一点,但忘了我在这里发布了它。
我有一个自定义的rb文件,当我通过命令行运行sass时我会引用它 - 就像这样:
sass --update sass:css -r file_mod.rb
在file_mod.rb中,我有以下ruby函数可以解决这个问题:
require 'sass'
module GETMODINT
def file_url(staticFilePath,staticHost,filePath)
assert_type filePath, :String
filePath = filePath.value #get string value of literal
staticFilePath = staticFilePath.value
staticHost = staticHost.value
modtime = File.mtime(filePath).to_i
#Sass::Script::Number.new(modtime)
fileBaseName = File.basename filePath, '.*'
fileDir = File.dirname(filePath).sub(staticFilePath,'')
fileExt = File.extname(filePath)
path = "url('#{staticHost}#{fileDir}/#{fileBaseName}.#{modtime}#{fileExt}')"
return Sass::Script::String.new(path)
end
Sass::Script::Functions.declare :modInt, [:filePath]
end
module Sass::Script::Functions
include GETMODINT
end
然后,在sass mixin中,我只是引用file_url函数,向它传递构建结果所需的参数:
@mixin backgroundImage($path, $position:0 0, $repeat:no-repeat) {
background: {
image:file_url($staticFilePath,$staticHost,$path);
position:$position;
repeat:$repeat;
}
}
在我的情况下,我用它来构建一个css背景图像路径。应该很容易修改以适应其他目的。