2012-01-16 12 views
15

Uaktualniam aplikację szyny z wieloma arkuszami stylów SCSS, aby użyć potoku zasobów i trzeba uwzględnić niektóre zmienne globalne i mixiny dla każdego pliku.Trwałe zmienne SCSS w potoku zasobów kolejowych?

Dodanie kilku @import dyrektyw w górnej części każdego pliku nie jest bardzo suche, więc chciałbym zrobić coś takiego:

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

to nie działa oczywiście, ponieważ zmienne nie jest zachowywane w plikach. Czy ktoś wie, jak to osiągnąć?

Odpowiedz

34

domyślna manifest składnia nie jest wystarczająco silne, aby dać ci przydatny Sass, takich jak wspólne zmienne, wstawek itp zamiast tego, Należy:

  1. Rename application.css do application.scss (lub application.css.scss w Rails 4 lub wcześniej)
  2. Zamiast

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

    nonsens, należy teraz używać

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

    To zapewni masz pełną korzyść swoich zmiennych i wstawek w całym projekcie, a trzymane są suche jak Sas s pozwala.

+0

Uzgodnione. Właśnie to robiłem. – Zubin

+2

Przykrością, na którą warto zwrócić uwagę dzięki temu rozwiązaniu, jest to, że wszystkie twoje css kończy się jednym plikiem. Pomysł z application.css polega na tym, że wciąż ładuje każdy plik css osobno (w dev), co może pomóc w kontroli jakości, ponieważ wiesz, że każdy plik jest uwzględniany w ruchu sieciowym. (Dzięki sass nadal możesz sprawdzić problemy i zobaczyć plik .scss, z którego pochodzi w komentarzach dodanych przez SASS). – gcoladarci

+1

Wierzę, że możesz mieć mapy źródeł wyjściowych szyn (http://fonicmonkey.net/2013/03/25/ native-sass-scss-source-map-support-in-chrome-and-rails /), dzięki czemu możesz bezpośrednio przeglądać pliki źródłowe. –

2

Nie wydaje się możliwe. Zakończono przygotowywanie każdego pliku przy użyciu @import 'includes/all'; i uwzględnianie wszystkich innych elementów z poziomu includes/all.css.scss.

5

Po prostu importowanie niezbędnego pliku z każdego pliku Scss lub Sass sprawdziło się. Na przykład mam pliku colors.scss który zawiera kilka stałych tak:

$black: #222; 

I potrzebują w moim application.css oczywisty wraz z kilkoma innymi pliki:

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

W moim przycisków. plik css.scss, po prostu to zrobić, aby uniknąć błędu:

@import "colors"; 
+0

Dokumenty tutaj mogą być również pomocne: https://github.com/rails/sass-rails/ –

+2

To nie rozwiązuje problemu. Celem było uniknięcie konieczności importowania ich z każdego pliku SCS. Twoja odpowiedź jest taka sama jak moja. Dzięki i tak :) – Zubin