2013-08-22 7 views
9

Ich fing an, geteilte Dinge wie Variablen und Mixins an einem Ort zu importieren - css manifest file. Jetzt importiere ich einige Compass Mixins mit direktem Pfad zu den Dateien.Beinhaltet @import 'compass' das gesamte Framework?

Meine Frage ist, wenn @import 'compass' das gesamte Framework in application.css injiziert oder wird es getan, indem man nach Referenzen in Sass-Dateien sucht und dann nur benötigte Mixins importiert?

Ich möchte nicht alles einschließen.

Antwort

13

Nach the docs@import 'compass' wird CSS3, Typografie und Dienstprogramme Module importieren. Diese Module fügen nichts in Ihre Ausgabe-CSS ein, sie enthalten nur Mixins.

Durch Beschränkung des Imports auf ein bestimmtes Modul oder Submodul (d. H. @import 'compass/css3/image') reduzieren Sie die Zeit, die zum Kompilieren Ihrer SASS-Dateien in CSS benötigt wird.


Zum Beispiel können wir zwei Dateien erstellen.

// all.scss 

@import "compass"; 

.candy { 
    @include background(linear-gradient(top left, #333, #0c0)); 
} 
// module.scss 

@import "compass/css3/images"; 

.candy { 
    @include background(linear-gradient(top left, #333, #0c0)); 
} 

Wenn wir sie kompilieren (compass compile sass/FILENAME.scss), wird Ergebnis CSS identisch sein:

.candy { 
    background: -webkit-gradient(linear, 0% 0%, 100% 100%, color-stop(0%, #333333), color-stop(100%, #00cc00)); 
    background: -webkit-linear-gradient(top left, #333333, #00cc00); 
    background: -moz-linear-gradient(top left, #333333, #00cc00); 
    background: -o-linear-gradient(top left, #333333, #00cc00); 
    background: linear-gradient(top left, #333333, #00cc00); 
} 

Jetzt können --time Argument für die Erstellung Befehl hinzufügen und die Ergebnisse vergleichen. Für meine Maschine dauerte es 1,516 s, um all.css vs nur 0,108 s für module.css zu kompilieren.

+0

Könnten Sie das näher erläutern? "Diese Module werden nichts in Ausgabe-CSS injizieren" und "Sie werden die Zeit reduzieren, die benötigt wird, um Ihre CSS in CSS zu kompilieren". Ich verstehe es nicht. Du hast gesagt, dass es nichts injiziert, aber dann, dass ein Nein begrenzt. von Modulen reduziert die Kompilierzeit. Bedeutet Kompilierung nicht, dass das Modul in den Ausgang injiziert wird? – wryrych

+0

@WojtekRyrych Siehe aktualisierte Antwort. – Pavlo

+0

OK, ich sehe jetzt. So bezieht '@ import' nur Module, aber es ist das' @ include', das Code in Ausgabe-CSS injiziert. Danke für die Klarstellung! – wryrych