我有一个rails项目,我想根据用户变量动态创建一个sass文件(作为用户自定义站点的一种方式)。我需要通过http将@import该文件导入到网站的主sass文件中,因为它是动态生成的,而不是实际写入文件系统。
如何配置:load_paths指令告诉SASS通过http而不是通过文件系统查找该文件?
文档说这是可能的,但我在网上找不到任何例子。 http://sass-lang.com/docs/yardoc/file.SASS_REFERENCE.html#custom_importers
答案 0 :(得分:5)
本文档讨论的是您可以实现自己的导入程序;以HTTP为例。幸运的是,这样做并不困难。
在这里,我实现了一个简单的HTTP导入程序:https://gist.github.com/1111803
它没有尽可能积极地缓存,你应该知道除了文件系统之外Sass还会使用它来查找所有导入(如果你使用像Compass这样的框架,那么有很多这样的框架)。如果您需要更高的性能,则应该在这种情况下缓存故障。不过,它似乎在我的测试中起作用。
您可以通过要求sass_http.rb
文件然后将其添加到加载路径来使用它:
require 'sass_http'
Sass::Plugin.options[:load_paths] ||= []
Sass::Plugin.options[:load_paths] << Sass::Importers::HTTP.new("http://stylesheets.example.com/")
当前路径必须引用目录(即以斜杠结尾)。您应该获得所有常用的调试信息(使用HTTP,而不是文件系统,路径)。