susy'手动启动' - 它确实有效吗?

时间:2013-01-27 00:52:37

标签: ruby sass compass-sass susy-compass

在Susy Getting Started页面上,有一个标记为“手动启动”的部分,其中显示“如果您未使用终端和/或Rails中的指南针,则可以使用此方法”。然后它解释了如何复制Susy的Sass定义和@import“susy”,之后(声称),“你很高兴”。

我正在尝试使用Susy作为我自己的构建系统的一部分,它使用'sass'命令行命令来编译我的样式表。显然,Susy Sass mixins和includes依赖于Compass,因此我从Compass发行版中提取了Compass Sass定义,并将它们放在Susy可以访问的位置。然后我尝试用以下代码编译我的样式表:

sass -I scss / compass scss / foobar.scss $ {CSSDIR} /foobar.css

当我这样做时,Susy会发出警告“你需要提供有效的布局(列数)或有效的媒体查询最小宽度断点(长度)”。

深入研究代码,问题似乎是Susy称之为Compass提供的“紧凑”功能。实际的呼叫类似于:

紧凑(FALSE,FALSE,FALSE,...)

- 我认为 - 应评估为:

但'compact'不是Sass功能;它是一个Compass函数,在Ruby中作为Compass的一部分实现。如果Compass的Ruby扩展不可用,那么该调用保持不变,因此Susy mixin正在接受:

紧凑(FALSE,FALSE,FALSE,...)

这不是'假的'......所以事情变成了梨形。 (问题发生在susy / _grid.scss的第93行)。

在我看来,好像使用没有指南针的Susy实际上是不可能的。这个问题的最佳解决方案是什么?我只是使用'compass compile ...'而不是'sass'来编译我的样式表吗?或者我可以某种方式以某种方式为'sass'提供'紧凑'功能吗?

1 个答案:

答案 0 :(得分:1)

您可以自己添加此功能,但我真的建议您使用Compass。它需要的只是一个config.rb文件,以便Compass知道文件应该存在于各种辅助函数的位置。由于输出位置已在配置文件中定义,因此使用Compass进行编译的命令更加紧凑:compass watchcompass compile

如果您不想使用Compass,可以自行添加该功能。首先,您需要custom函数,该函数来自此处:https://github.com/chriseppstein/compass/blob/stable/lib/compass/sass_extensions/functions/lists.rb#L18

def compact(*args)
sep = :comma
if args.size == 1 && args.first.is_a?(Sass::Script::List)
  list = args.first
  args = list.value
  sep = list.separator
end
Sass::Script::List.new(args.reject{|a| !a.to_bool}, sep)
end

将它放在任何有意义的红宝石文件中。

你的sass命令现在只需要添加这个标志:-r ./path/to/functions.rb