2013-07-01 59 views
0

我在罗盘项目中遇到了不同的.css输出路径(特定文件)的问题。指南针不同的css输出路径和url帮助者

比方说,我已经得到了目录树是这样的:

/
..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 

目标

我需要使用里面的 “文件夹” 目录萨斯我的意思是一些example.scss文件必须在“Folder”中编译成example.css。但是,我必须使用相对url助手和“Sasss/_mixins.scss”文件中定义的一些mixins的指南针。

问题

的问题是,我不能为example.scss指定不同的输出路径,因为在config.rbStyles)被指定为输出SCSS路径,是吗?好了,我试图以移动example.css添加Ruby代码来config.rb它是从“风格”目录的“文件夹” DIR像这样编后:

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 

,但现在相对图像URL()不能正常工作,因为它是在“Styles”dir中编译的,所以url是相对于这个目录而不是“Folder”的。

解决方案?

所以我的问题是:什么是最好的方式或黑客来实现这一目标?

回答

0

唯一的优雅解决方案是将您的Galleria子项目移动到单独的项目中。你实际上有两个项目,你为什么要把它们作为一个整体来管理?相反,在部署期间保持它们分开并放在一起。

或者,从子项目中创建一个Compass扩展(如果它的结构和修改量允许的话),并通过导入它(直接或通过mixins)将必要的内容注入到主项目中。

一个肮脏的解决方案是使用符号链接:

cd Styles 
ln -s ../Folder Folder 

然后创建Sass/Folder/foo.sass

但是这使得compass compile变得疯狂并且每次都重新创建整个项目(而不是只覆盖修改过的文件)。

您也可以尝试创建相反方向的符号链接,但你必须确保你的网络服务器allowsfollowing符号链接

+0

符号链接是不是一种选择。是的,我认为最好的解决方案是将它们作为两个独立的项目来管理。谢谢。 –