Постоянные переменные SCSS в конвейере ресурсов рельсов? - PullRequest
19 голосов
/ 17 января 2012

Я обновляю приложение rails с большим количеством таблиц стилей SCSS для использования конвейера ресурсов, и мне нужно включить некоторые глобальные переменные и миксины для каждого файла.

Добавление нескольких директив @import вверху каждого файла не очень СУХО, поэтому я бы хотел сделать что-то вроде этого:

# application.css
/*
*= require variables
*= require mixins
*= require_tree .
*/

Конечно, это не работает, потому что переменные не сохраняются в файлах. Кто-нибудь знает, как этого добиться?

Ответы [ 3 ]

36 голосов
/ 24 апреля 2013

Синтаксис манифеста по умолчанию недостаточно мощный, чтобы предоставить вам полезные функции Sass, такие как общие переменные, миксины и т. Д. Вместо этого вам следует:

  1. Переименование application.css в application.scss (или application.css.scss в Rails 4 или более ранних версиях)
  2. Вместо использования

    /*
     *= require variables
     *= require mixins
     *= require_tree .
     */
    

    ерунда, теперь вы должны использовать

    @import "variables";
    @import "mixins";
    @import "blah"; // import each SCSS file in your project like this.
    

    Это позволит вам в полной мере использовать переменные и миксины на протяжении всего проекта, и вы будете использовать СУХОЙ режим, насколько позволяет Sass.

7 голосов
/ 06 июля 2012

Мне кажется, что простой импорт необходимого файла из каждого файла Scss или Sass сработал. Например, у меня есть файл colors.scss, который содержит некоторые константы, подобные этой:

$black: #222;

Мне требуется это в моем файле application.css вместе с некоторыми другими файлами:

/*
 *= require colors
 *= require buttons
*/

В моем файле buttons.css.scss я просто делаю это, чтобы избежать ошибки:

@import "colors";
2 голосов
/ 23 января 2012

Кажется невозможным. Закончилось добавлением к каждому файлу @import 'includes/all'; и включением всего остального от includes/all.css.scss.

...