我在罗盘项目中遇到了不同的.css输出路径(到特定文件)的问题。
假设我有这样的目录树:
/
..Fonts
..Folder
..Images
..Sass
.._mixins.scss
..[other_stuff]
..Styles
..config.rb
这是我的config.rb
:
http_path = "/"
css_dir = "Styles"
sass_dir = "Sass"
images_dir = "Images"
javascripts_dir = "Scripts"
fonts_dir = "Fonts"
output_style = :nested
relative_assets = true
color_output = false
我需要在“Folder”目录中使用sass,我的意思是一些example.scss文件必须编译到“Folder”里面的example.css中。但是,我必须使用指南针和相对网址助手以及“Sasss / _mixins.scss”文件中定义的一些mixin。
问题是,我无法为example.scss
指定不同的输出路径,因为scss的输出路径在config.rb
(Styles
)中指定,对吧?好的,所以我尝试将ruby代码添加到config.rb
以便在将example.css从“Styles”目录编译为“Folder”目录之后移动它,如下所示:
require 'fileutils'
on_stylesheet_saved do |file|
if File.exists?(file) && File.basename(file) == "example.css"
puts "Moving: #{file}"
FileUtils.mv(file, File.dirname(file) + "/../Folder/" + File.basename(file))
end
end
但是,现在相对的image-url()无法正常工作,因为它是在“样式”目录中编译的,因此url是相对于此目录而不是“Folder”的目录。
所以我的问题是:实现这个目标的最佳方法是什么?
答案 0 :(得分:0)
唯一优雅的解决方案是将您的Galleria子项目移动到一个单独的项目中。你实际上有两个项目,为什么要尝试将它们作为一个项目进行管理?相反,请将它们分开并在部署期间将它们放在一起。
或者,从子项目中创建一个Compass扩展(如果它的结构和更改量允许),并通过导入(直接或通过mixins)将必要的东西注入主项目。
一个肮脏的解决方案是使用符号链接:
cd Styles
ln -s ../Folder Folder
然后创建Sass/Folder/foo.sass
。
但是这会让compass compile
变得疯狂并且每次都重新创建整个项目(而不是仅覆盖已修改的文件)。