Правильная структура активов SCSS в Rails

Итак, у меня есть структура каталогов app / assets / stylesheets / , которая что-то выглядит примерно так:

   |-dialogs
   |-mixins
   |---buttons
   |---gradients
   |---vendor_support
   |---widgets
   |-pages
   |-structure
   |-ui_elements

В каждом каталоге есть несколько партиалов sass (обычно * .css.scss, но один или два * .css.scss.erb).

Я могу предположить многое, но rails ДОЛЖЕН автоматически компилировать все файлы в этих каталогах из-за * = require_tree. в application.css, верно?

Недавно я попытался реструктурировать эти файлы, удалив все цветовые переменные и поместив их в файл в корневой папке app / assets / stylesheets (_colors.css) .scss). Затем я создал файл master.css.scss в корневой папке app / assets / stylesheets , который выглядит следующим образом:

// Color Palette 
@import "colors";

// Mixins
@import "mixins/buttons/standard_button";
@import "mixins/gradients/table_header_fade";
@import "mixins/vendor_support/rounded_corners";
@import "mixins/vendor_support/rounded_corners_top";
@import "mixins/vendor_support/box_shadow";
@import "mixins/vendor_support/opacity";

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

Undefined variable: "$dialog_divider_color".
  (in /home/blah/app/assets/stylesheets/dialogs/dialog.css.scss.erb)

Undefined mixin 'rounded_corners'.
  (in /home/blah/app/assets/stylesheets/widgets.css.scss)

Переменная $ dialog_divider_color четко определена в _colors.css.scss, а _master.css.scss импортирует цвета и все мои миксины. Но, видимо, эту памятку Рилс не получил.

Могу ли я как-нибудь исправить эти ошибки, или мне придется возвращать все определения переменных в каждый отдельный файл, а также все импортированные миксины?

К сожалению, этот парень , похоже, не думает, что это возможно, но я надеюсь, что он ошибается. Любые мысли приветствуются.

82
задан Community 23 May 2017 в 12:02
поделиться