2012-01-16 2 views
15

Sto aggiornando un'applicazione Rails con molti fogli di stile SCSS per utilizzare la pipeline di asset e ho bisogno di includere alcune variabili globali e mixin per ogni file.Variabili SCSS persistenti nella pipeline delle risorse dei binari?

Aggiunta di diverse direttive @import nella parte superiore di ogni file non è molto secco, quindi mi piacerebbe fare qualcosa di simile:

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

Questo non funziona, ovviamente, perché le variabili sono non persistente tra i file. Qualcuno sa come raggiungerlo?

risposta

34

l'impostazione predefinita sintassi manifesta non è abbastanza potente per darvi utili Sass caratteristiche come variabili condivise, mixins, ecc, invece, è dovrebbe:

  1. Rinomina application.css a application.scss (o application.css.scss in Rails 4 o precedenti)
  2. Invece di usare il nonsense

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

    , ora si dovrebbe usare

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

    Questo assicurerà di avere pieno beneficio delle variabili e mixins tutto il progetto, e si sono tenuti il ​​più asciutto Sas s permette.

+0

concordato. Questo è quello che ho fatto anche io. – Zubin

+2

Un fastidio che vale la pena sottolineare con questa soluzione è che tutto il tuo css finisce in un unico file. L'idea con application.css è che carica ancora ogni file css separatamente (in dev) che può essere d'aiuto con il QA dato che conosci ogni file incluso nel tuo traffico di rete. (Concesso con sass puoi ancora esaminare i problemi e vedere il file .scss da cui proviene nei commenti aggiunti da SASS) – gcoladarci

+1

Credo che tu possa avere mappe di sorgenti di output di binari (http://fonicmonkey.net/2013/03/25/ native-sass-scss-source-map-support-in-chrome-and-rails /), in modo da poter ispezionare direttamente i file sorgente. –

2

Non sembra possibile. Finito il prepending di ogni file con @import 'includes/all'; e includendo tutto il resto da includes/all.css.scss.

5

L'importazione del file necessario da ogni file Scss o Sass sembra aver funzionato per me. Ad esempio, ho un file colors.scss che include alcune costanti come questo:

$black: #222; 

ho bisogno nella mia application.css manifesta insieme ad alcuni altri file:

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

Nei miei pulsanti. lima css.scss, ho semplicemente fare questo per evitare l'errore:

@import "colors"; 
+0

I documenti qui possono anche essere utili: https://github.com/rails/sass-rails/ –

+2

Questo non risolve il problema. L'obiettivo era evitare la necessità di importarli da ciascun file scss. La tua risposta è uguale alla mia. Grazie comunque :) – Zubin