指南针不同的css输出路径和url帮助程序



我在compass项目中遇到了一个不同的.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.scs文件必须编译成"文件夹"中的example.css。但是,我必须将compass与相关的url助手和"Sass/\umixins.scs"文件中定义的一些mixin一起使用。

问题

问题是,我不能为example.scss指定不同的输出路径,因为scs的输出路径是在config.rbStyles)中指定的,对吧?好的,所以我尝试将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()不能正常工作,因为它是在"Styles"目录中编译的,因此url是相对于这个目录而不是"Folder"目录的。

解决方案

所以我的问题是:实现这一点的最佳方法或破解方法是什么?

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

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

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

cd Styles
ln -s ../Folder Folder

然后创建Sass/Folder/foo.sass

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

您也可以尝试创建相反方向的符号链接,但必须确保您的web服务器允许以下符号链接

最新更新