Как сделать переменную Bootstrap sass видимой для другого импортированного файла sass?

Я использую bootstrap-sass в приложении Rails. До сих пор все работало нормально, но я только что попытался импортировать другой сторонний файл sass, который использует переменные начальной загрузки, и он их не видит.

In my application.css.scss

*= require bootstrap_local

In bootstrap_local.css.scss

@import "bootstrap";
@import "bootstrap-social";

Когда я делаю доступ к странице, я получаю сообщение об ошибке Rails

Undefined variable: "$line-height-computed".
(in .../app/assets/stylesheets/bootstrap-social.scss:11)

Переменная, необходимая bootstrap-social.scss, определена в ранее импортированном файле bootstrap (на самом деле она определена в частичном bootstrap/variables, который он включает).

Насколько я понимаю, это должно работать, потому что bootstrap_local требуется, что означает, что все в нем скомпилировано вместе в одной области, поэтому все, импортированное в bootstrap_local, обрабатывается как один большой файл. Может это у меня неправильно?

Если я добавляю @import "bootstrap"; в bootstrap-social.scs, то все работает нормально. Но мне не нужно этого делать, поэтому я либо делаю что-то не так, либо у меня неправильная конфигурация с моей настройкой.

Что мне нужно сделать, чтобы исправить это?

Драгоценные камни:

  • бутстрап-сасс-3.1.1.1
  • Сасс-рельсы-4.0.3

Система:

  • Рельсы 4.0.1
  • ruby 2.0.0p247 (27 июня 2013 г., редакция 41674) [x86_64-linux]

(Bootstrap Social – это набор кнопок входа в социальные сети, созданных на чистом CSS на основе Bootstrap и Font. Потрясающий.)


person starfry    schedule 16.07.2014    source источник
comment
Возможный дубликат: stackoverflow .com/questions/17976140/   -  person cimmanon    schedule 16.07.2014
comment
Я прочитал это. В частности, это, в котором упоминалось переименование файла с префиксом подчеркивания, но это не имело значения. Однако я пойду еще раз...   -  person starfry    schedule 16.07.2014


Ответы (1)


Проблема, описанная в вопросе, может быть решена путем изменения манифеста application.css.scss для использования import вместо require:

@import "bootstrap_local";

Также необходимо удалить все файлы require_tree . из манифеста, потому что в противном случае требуется тот же файл bootstrap_local, поскольку он лежит на его пути.

Если подумать, отсутствие require tree . в манифесте, вероятно, разумно, потому что это предотвращает включение нежелательных файлов. У меня он был там только потому, что он есть по умолчанию в новом проекте Rails (то же самое касается require_self; чище не помещать это в манифест).

Что касается предложения о добавлении к файлу префикса подчеркивания, это это хорошая вещь, когда вам не нужен файл, например bootstrap-social в вопросе, для компиляции в отдельный CSS файл. Итак, в итоге я переименовал его в _bootstrap-social.scss.

person starfry    schedule 16.07.2014