0

在 Susy Getting Started页面上,有一个标记为 的部分'Manual Start',上面写着:

“如果您不使用终端和/或 Rails 中的 Compass,您可以使用此方法”。

然后它解释了如何复制 Susy 的 Sass 定义@import "susy",然后(它声称),“你很好去”。

我正在尝试将 Susy 用作我自己的构建系统的一部分,该系统使用“sass”命令行命令来编译我的样式表。显然,Susy Sassmixins依赖includes于 Compass,所以我从 Compass 发行版中提取了 Compass Sass 定义,并将它们放在 Susy 可以访问的地方。然后我尝试编译我的样式表:

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

当我这样做时,Susy 会发出警告:

“您需要提供有效的布局(列数)或有效的媒体查询最小宽度断点(长度)”。

深入研究代码,问题似乎在于 Susy 调用了 Compass 提供的“紧凑”函数。实际的调用是这样的:

compact(false,false,false,...)

其中 - 我认为 - 应该评估为:

false

但是“紧凑”不是 Sass 的特性;它是一个 Compass 函数,在 Ruby 中作为 Compass 的一部分实现。如果 Compass 的 Ruby 扩展不可用,则该调用保持不变,因此 Susy mixin 正在处理:

compact(false,false,false,...)

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

在我看来,似乎在没有 Compass 的情况下使用 Susy 实际上是不可能的。我对这个问题的最佳解决方案是什么?我只是使用'compass compile ...'而不是'sass'编译我的样式表吗?或者我可以以'compact'某种其他方式提供“sass”的功能吗?

4

1 回答 1

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

将它放在任何有意义的 ruby​​ 文件中。

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

于 2013-01-27T12:41:22.740 回答