gpt4 book ai didi

css - 如何检测 SCSS 文件或其任何部分文件是否已更新

转载 作者:太空宇宙 更新时间:2023-11-03 16:52:02 25 4
gpt4 key购买 nike

我想在 Ruby 脚本中运行 sass。编译 scss 文件 scss 可以通过以下方式完成:

require "sass"
Sass::Engine.new(File.read(scss), options).render

将一些适当的散列分配给 options,但我只想在 scss 或其任何部分(导入的)文件更新时编译它。

options 中,我打开了 sass 缓存。缓存将相关文件的所有更新信息保存在某个目录中。我觉得,通过这样做:

engine = Sass::Engine.new(File.read(scss), options)

engine 中必须有可用的信息,我可以通过这些信息判断 scss 或其任何部分文件是否已更新。只有在这种情况下,我才应该运行:

engine.render

进行编译。如何根据 sass 缓存检测文件更新?

最佳答案

您可以使用:

Sass::Engine.for_file(scss, options).render

这将检查 scss 文件哈希的缓存目录中是否存在缓存的解析树。请在此处查看 Sass::Engine.for_file 的文档:http://sass-lang.com/docs/yardoc/Sass/Engine.html .

缓存查找在 Sass::Engine#_to_tree 方法中执行,源代码可在此处获得:https://github.com/nex3/sass/blob/stable/lib/sass/engine.rb .

编辑

Sass::Engine#_to_tree 的前几行:

def _to_tree
if (@options[:cache] || @options[:read_cache]) &&
@options[:filename] && @options[:importer]
key = sassc_key
sha = Digest::SHA1.hexdigest(@template)

if root = @options[:cache_store].retrieve(key, sha)
root.options = @options
return root
end
end
# ...
end

关于css - 如何检测 SCSS 文件或其任何部分文件是否已更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19136388/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com