susy «Ручной запуск» — это действительно работает?

На странице Susy Начало работы есть раздел с пометкой 'Manual Start', в котором говорится:

«Вы можете использовать этот метод, если вы не используете Compass из Terminal и/или Rails».

Затем он объясняет, как скопировать определения Susy Sass и @import "susy", после чего (как утверждается) «все готово».

Я пытаюсь использовать Susy как часть моей собственной системы сборки, которая использует команду командной строки 'sass' для компиляции моих таблиц стилей. Очевидно, что Susy Sass mixins и includes зависят от Compass, поэтому я извлек определения Compass Sass из дистрибутива Compass и поместил их туда, где 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:

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

что не 'false' ... и так все идет грушевидной формы. (Проблема возникает в строке 93 файла susy/_grid.scss).

Мне кажется, что использование Susy без Compass на самом деле невозможно. Какое мое лучшее решение этой проблемы? Я просто использую 'compass compile ...'вместо 'sass' для компиляции моей таблицы стилей? Или я могу каким-то другим образом предоставить функцию 'compact' для 'sass'?


person user2014665    schedule 27.01.2013    source источник
comment
Я думаю, что этот документ мог быть написан для предыдущей версии, которая действительно работала без Compass. Я могу проверить это и обновить документы. Не могли бы вы зарегистрировать проблему на github? Спасибо, что указали на это!   -  person Miriam Suzanne    schedule 28.01.2013
comment
Разве опция --compass не предназначена для этого? Он должен сделать доступным импорт Compass и загрузить конфигурацию проекта. Я думаю, что это подход, используемый плагином sass для платформы Play: github.com/ShaggyYeti/sbt-sass. (и, кажется, это работает для меня)   -  person gijswijs    schedule 18.12.2014


Ответы (1)


Вы можете добавить эту функцию самостоятельно, хотя я очень рекомендую использовать Compass. Все, что для этого требуется, — это файл config.rb, чтобы Compass знал, где должны находиться файлы для различных вспомогательных функций. Команда для компиляции с помощью Compass более компактна, так как место вывода уже определено в конфигурационном файле: compass watch или compass compile

Если вы не хотите использовать Компас, вы можете добавить функцию самостоятельно. Сначала вам понадобится функция 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

person cimmanon    schedule 27.01.2013