Как получить доступ к переменным SASS в Slim, HAML и т. д.?

Как получить доступ к переменным и миксинам SASS, которые хранятся в каталоге ресурсов проекта, напрямую из HTML-препроцессоров (Slim, HAML)?

Я имею в виду, как заставить работать такие вещи:

// Ruby Slim
style
    sass:
        @import 'lib/vars'
        body
            background: $color

производство:

<style type="text/css">
    body {
        background: #fff
    }
 </style>

тогда как $color определяется где-то в lib/_vars.sass и равно #fff.

Зачем мне это нужно? Ну, мне это нужно для стилей и элементов, специфичных для страницы, и я не хочу хранить их в глобальных стилях.

У меня это не работает в среде Middleman+Slim+SASS+Compass. Руби просто говорит:

Error: File to import not found or unreadable: lib/vars.

person Bogdan Slovyagin    schedule 20.10.2014    source источник
comment
Я не думаю, что можно передать переменные HAML в SASS.   -  person Zach Saucier    schedule 20.10.2014
comment
Нет-нет, не HAML, а SASS.   -  person Bogdan Slovyagin    schedule 20.10.2014
comment
Итак, с SASS на HAML?   -  person Zach Saucier    schedule 20.10.2014
comment
Хорошо, возможно, мой английский недостаточно хорош, чтобы объяснить это правильно, поэтому я попытаюсь выразиться более четко :-) Итак, у меня есть типичный проект с .sass с vars, который импортируется в основной .sass приложения, который компилируется в .css приложения, как обычно. Но мне нужны некоторые стили в HTML, которые также могут использовать глобальные переменные SASS. Я не хочу писать CSS вручную, чтобы все было последовательно. Я хотел бы использовать всю мощь SASS даже в таком конкретном случае. Поэтому я спрашиваю, есть ли способ сделать это. Потому что сейчас это не работает так, как должно быть.   -  person Bogdan Slovyagin    schedule 21.10.2014
comment
Так что да, от SASS к HAML, вы правы.   -  person Bogdan Slovyagin    schedule 21.10.2014
comment
Это невозможно. Вы должны дать элементам класс и стиль, который класс в вашем SASS   -  person Zach Saucier    schedule 21.10.2014
comment
О, спасибо, но почему бы и нет, разве ты не знаешь?   -  person Bogdan Slovyagin    schedule 21.10.2014
comment
Потому что бесполезно? Использование класса и применение стилей к классу делает то, что я понимаю, вы хотите   -  person Zach Saucier    schedule 21.10.2014
comment
Да, но что делать, если не хочется вручную переопределять кучу моих переменных, примесей (clearfix, font-sizes например) и т.д. Это может пригодиться и там. Но в любом случае это не работает.   -  person Bogdan Slovyagin    schedule 21.10.2014
comment
Зачем вам в любом случае нужны размеры шрифта и т. д. в вашем HAML?   -  person Zach Saucier    schedule 21.10.2014
comment
Вы должны расширить путь загрузки Sass, указав местоположение ваших частей Sass, откуда вы запускаете Slim.   -  person Andrey Mikhaylov - lolmaus    schedule 22.10.2014
comment
Спасибо, но это не работает для меня.   -  person Bogdan Slovyagin    schedule 23.10.2014


Ответы (3)


Хотелось бы лучшего ответа, но, к сожалению, это невозможно.

person jeffdill2    schedule 02.12.2015

Это возможно с Sass 3. Просмотрите в этой статье, в которой вы:

  1. Используйте гем sass_paths для управления переменной ENV, которая содержит пути поиска.
  2. Добавьте инициализатор, который добавляет ваш путь к переменной ENV.

Например:

# config/initializers/sass_paths.rb
require 'sass_paths'

# append a directory, or list of directories to SASS_PATH
SassPaths.append("#{Rails.root}/app/assets/stylesheets")
person steakchaser    schedule 21.07.2016

Как сказал @steakchaser, можно использовать гем sass_path, но если у вас нет проблем с переменную ENV (SASS_PATH) самостоятельно, вы также можете сделать простое добавление следующим образом:

# in config/initializers/assets.rb for example
ENV['SASS_PATH'] = ["app/assets/stylesheets", ENV['SASS_PATH'].presence].compact.join(':')

После этого импорт из добавленной папки будет работать с тегами встроенного стиля Slim и HAML.

person Adrien Jarthon    schedule 27.01.2021