【问题标题】:Compass different css output path and url helpers罗盘不同的 css 输出路径和 url 助手
【发布时间】:2013-07-01 15:44:43
【问题描述】:

我在 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

目标

我需要在“文件夹”目录中使用 sass,我的意思是一些 example.scss 文件必须编译成“文件夹”中的 example.css。但是,我必须将 compass 与相关 url 帮助程序和“Sasss/_mixins.scss”文件中定义的一些 mixin 一起使用。

问题

问题是,我不能为example.scss 指定不同的输出路径,因为在config.rb (Styles) 中指定了scss 的输出路径,对吧?好的,所以我尝试将 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 是相对于这个目录而不是“文件夹”的。

解决方案?

所以我的问题是:实现这一目标的最佳方法或技巧是什么?

【问题讨论】:

    标签: css ruby sass compass-sass


    【解决方案1】:

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

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

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

    cd Styles
    ln -s ../Folder Folder
    

    然后创建Sass/Folder/foo.sass

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

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

    【讨论】:

    • 符号链接不是一个选项。是的,我认为最好的解决方案是将它们作为两个单独的项目进行管理。谢谢。
    猜你喜欢
    • 1970-01-01
    • 2021-01-11
    • 2011-02-20
    • 1970-01-01
    • 2013-11-26
    • 1970-01-01
    • 1970-01-01
    • 2019-01-26
    • 2013-09-28
    相关资源
    最近更新 更多