Сохранение переменных SCSS в конвейере ресурсов rails?
Я обновляю приложение rails с большим количеством таблиц стилей SCSS для использования конвейера активов и должен включать в себя некоторые глобальные переменные и mixins для каждого файла.
Добавление нескольких директив @import
в верхней части каждого файла не очень DRY, поэтому я хотел бы сделать что-то вроде этого:
# application.css
/*
*= require variables
*= require mixins
*= require_tree .
*/
Это не работает, конечно, потому что переменные не сохраняются в файлах. Кто-нибудь знает, как достичь этого?
Ответы
Ответ 1
Синтаксис манифеста по умолчанию недостаточно мощный, чтобы дать вам полезные функции Sass, такие как общие переменные, mixins и т.д. Вместо этого вы должны:
- Переименуйте application.css в application.scss(или application.css.scss в Rails 4 или ранее).
-
Вместо использования
/*
*= require variables
*= require mixins
*= require_tree .
*/
ерунда, теперь вы должны использовать
@import "variables";
@import "mixins";
@import "blah"; // import each SCSS file in your project like this.
Это обеспечит вам полную отдачу от ваших переменных и микшинов в вашем проекте, и вы будете хранить их как СУХИЕ, как позволяет Sass.
Ответ 2
Просто импорт необходимого файла из каждого файла Scss или Sass, похоже, сработал у меня. Например, у меня есть файл colors.scss, который содержит некоторые константы вроде этого:
$black: #222;
Я требую его в манифесте application.css вместе с некоторыми другими файлами:
/*
*= require colors
*= require buttons
*/
В моем файле buttons.css.scss я просто делаю это, чтобы избежать ошибки:
@import "colors";
Ответ 3
Кажется невозможным. Завершено добавление каждого файла с @import 'includes/all';
и включение всего остального из includes/all.css.scss
.
Ответ 4
Замените require на @import и удалите все = require
, даже если вы думаете, что вы это закомментировали.