SASS und Compass Teil 2: Compass aufsetzen

Warum eigentlich Compass und nicht SASS, und was ist überhaupt der Unterschied?

SASS ist ein Preprocessor für CSS, und die dazu passende Skriptsprache, um aus den .sass bzw .scss (wir verwenden in den ganzen Beispielen .scss) Dateien "normale" CSS-Dateien zu erzeugen.

Compass ist ein Framework bzw. Komponenten-Bibliothek zu SASS. Es enthält jede Menge vorgefertigte Bausteine (Mixins usw), die man dann nicht mehr selber bauen muß. Da diese Bausteine sehr einfach zu erstellen und zu verwenden sind, kann man es vielleicht mit den Bundles für Textmate vergleichen. Da Compass auf SASS aufbaut, installiert es SASS gleich mit. Also brauchen wir nur Compass zu installieren und haben beides.

Compass aufsetzen auf Windows mit Cygwin

Wir müssen zunächst Ruby installieren, da Compass in Ruby geschrieben ist. Es gibt auch PHP-Pakete, die aber Ports sind, und in der Funktionalität immer etwas hinterherhängen, da die Entwicklung im Hauptprojekt stattfindet. Der Workflow von undpaul verwendet ausschließtlich Git (schlimmstenfalls eine andere Versionsverwaltung), statt per FTP direkt auf dem Server zu arbeiten. Wir müssen daher nicht auf einem Remote Server .scss Dateien kompilieren, und brauchen uns nicht mit einem auf dem Server eventuell nicht vorhandenen Ruby auseinanderzusetzen.

Ich verwende für Git, Bazaar und auch Compass Cygwin. Das vereinfacht den Installationsprozeß deutlich, und ich kann die gleichen Terminal-Befehle verwenden wie die Kollegen auf dem Mac und in Linux. Also Ruby einfach über die setup.exe von Cygwin Ruby installieren:

Nun brauchen wir noch Ruby Gems, die Paketverwaltung von Ruby. Zunächst prüfen wir, ob diese von Cygwin mitinstalliert wurde:

gem -v

Wir bekommen eine Versionszahl angezeigt, wenn ja, z.B. "1.8.15". Falls nicht, folgen wir der Anleitung von Steven Harman. Ruby Gems von Rubyforge herunterladen. Mit Cygwin in das heruntergeladene Verzeichnis navigieren, und folgendes ausführen

ruby setup.rb install

gem update --system

Compass zu installieren, ist nun denkbar einfach:

gem install compass

Der Befehl zieht Compass vom Download-Repository herunter und installiert es, ganz wie man es in Linux von apt-get install kennt.
Wir sehen, daß neben zwei weiteren Paketen SASS und Compass in der aktuellen Version installiert werden.

compass help

So prüfen wir, ob Compass korrekt installiert wurde. Wenn ja, erscheint eine Übersicht der Compass-Befehle. Der gesamte Installationsprozess ist hier nochmal im Zusammenhang beschrieben.

Compass auf dem Mac installieren

Diesen Teil werden die Mac-affinen Kollegen bestimmt noch ergänzen, ich kann erstmal nur externe Tutorials zitieren. Meines Wissens nach ist Ruby und Ruby Gems auf Mac Os X vorinstalliert. Man sollte sich also gar nicht darum kümmern müssen. Wenn man die Versionen der Pakete updaten möchte, ist das allerdings evtl. etwas hakelig, da sie als integraler Systembestandteil verwaltet werden und nicht verändert werden sollten. Das Problem und eine Lösung beschreibt dieser Post: http://stackoverflow.com/questions/3474875/why-does-mac-os-x-come-with-ruby-rails

Gehen wir aber einfach davon aus, daß gar kein Problem besteht, sondern Ruby und Ruby Gems da sind und funkitonieren. Wieder der einfache Check, ob Gems betriebsbereit ist

gem -v

Dann reicht

sudo gem install compass

vielleicht, wie in der Windwos-Sektion beschrieben, noch die Installation von Compass mit

compass help

überprüfen, und alles ist bereit.

Das config-file erzeugen

Die schlankeste Methode, um Compass zu benutzen, ist das Erzeugen einer config.rb-Datei. Diese teilt Compass ein paar einfache Parameter mit, so daß es weiß, woher es die .scss-Dateien holen soll und wo es die .css-Dateien hinpacken soll. Es gibt noch einige Optionen mehr, die wir hier jedoch nicht im Detail beleuchten.

Wir gehen mit der Konsole in das Root-Verzeichnis unseres Themes. Nun führen wir folgendes aus:

compass config

Der Befehl erzeugt einen Ordner /config, und darin befindet sich die Datei compass.rb. .rb ist die Dateiendung für Ruby-Code-Dateien. Wir benennen compass.rb um in config.rb, damit sie als Konfigurationsdatei erkannt wird.

Die Datei sieht nach dem Erzeugen so aus (abgesehen von Kommentaren):

http_path = "/"
css_dir = "stylesheets"
sass_dir = "sass"
images_dir = "images"
javascripts_dir = "javascripts"

Da die Datei im Unterordner /config liegt, müssen wir die Pfade noch anpassen, auch heißen bei mir meist die Ordner anders:

http_path = "/"
css_dir = "../css"
sass_dir = "../sass"
images_dir = "../images"
javascripts_dir = "../js"

Wir können die Pfade und Ordnernamen beliebig anpassen, sie müssen nur den tatsächlichen Gegebenheiten entsprechen.
.scss-Dateien kommen in einen Unterordner /sass, damit sie entsprechend dem oben angegebenen Pfad gefunden werden.
Fertig. Nun müssen wir nur jedesmal

compass compile config

ausführen, wenn wir aus unseren .scss-Dateien die passenden .css erzeugen wollen. Wenn alles gut läuft, sagt uns Compass

overwrite config/../style.css

Loslegen...

Automatisch kompilieren

Als Alternative dazu, jedes Mal compass compile auszuführen, kann man Compass das auch automatisch erledigen lassen. Dann wird jedes Mal, wenn man die .scss-Datei speichert, automatisch kompiliert und die CSS-Dateien erzeugt. Ich verwende es nicht, da ich lieber manuell die Kontrolle habe, jedoch mag es manchen in der automatischen Variante komfortabler erscheinen.

Man begibt sich in den Root-Folder des Themes und führt folgendes aus

Compass watch

Nun sind alle .scss-Dateien zum automatischen Kompilieren registriert. Eine typische Antwort auf der Konsole, die dies bestätigt, wäre z.B.

>>> Change detected to: sass-styles.scss
  create stylesheets/sass-styles.css
>>> Compass is polling for changes. Press Ctrl-C to Stop.

Man muß das betreffende Konsolenfenster offen lassen und kann es, während Compass die .scss Dateien watcht (auf Änderungen überwacht), nicht für andere Befehle verwenden. Wie angegeben stoppt Strg + C das Watchen.

Syntax-Check

Das Debugging in Compass/Sass funktioniert prima. Wenn ich in meiner .scss-Datei falschen Code einbaue, gibt mir die Kommandozeile beim Kompilieren einen Fehler aus:

error sass/sass-styles.scss (Line 180: Undefined variable: "$tags-hover-color".)

Auch das erzeugte Stylesheet sieht in diesem Fall seltsam aus: die Fehlermeldung wird in das Stylesheet geschrieben, eine lange Liste von Gem-Dateien wird angegeben und der größte Teil der Styles fehlt. Also einfach Fehler korrigieren und nochmal kompilieren.

Um das Benutzen von SASS geht es in Teil 1 dieser Mini-Serie: SASS und Compass Teil 1: SASS macht das Leben leichter

Kommentare

Bild von Gerald
Gerald

Ich bin PC-User und trete gerade erst mit Compass/SASS in Kontakt. Nun bin ich im Begriff das Framework zu installieren. Bislang keine Schwierigkeit. Im Abschnitt "Das config-file erzeugen" heißt es jedoch, man solle an der shell in das "Root-Verzeichnis des Themes" navigieren. - Welches Verzeichnis ist damit bitte genau gemeint ... etwa mein privates Projekt-Verzeichnis, welches auch meine Standard-CSS-Verzeichnis enthält? Der Begriff "Themes" irritiert mich in diesem Zusammenhang etwas. Ich kenne seinen Gebrauch nur in Verbindung mit CMS'. Herzlichen Dank für die Hilfe und dieses ansonsten sehr hilfreiche Tut!

Bild von Micha
Micha

Danke für die Einführung. Wenn ich automatisch kompilieren möchte und vorher die config.rb angelegt habe, muss ich "compass watch config" aufrufen. Ansonsten wird eine Standardkonfiguration genutzt.

Bild von eigentor
eigentor

@Gerald Das Tutorial ist aus Sicht eines Drupal Users geschrieben. Das "Root Verzeichnis des Themes" kann im Falle einer statischen Website an einem beliebigen Ort sein, auf jeden Fall sollte es den Ordner mit den CSS Dateien enthalten. In deinem Falle würde ich sagen: ja, dein privates Projekt-Verzeichnis.

Bild von Achim
Achim

Moin, vielen Dank für den Anstoß! Compass in Verbindung mit Drupal… Yes!

Kleine Berichtigung aus meiner Sicht:
Mac OSX 10.7
Compass 0.12.2

Die compass.rb sollte nicht umbenannt werden und es ist ebenfalls nicht nötig Pfadangaben relativ zur Konfigurationsdatei zu machen. Meine config/compass.rb sieht bspw. wie folgt aus:

http_path = "/"
css_dir = "css"
sass_dir = "sass"
images_dir = "images"
javascripts_dir = "js"

Bild von eigentor
eigentor

-- Update -- mit dem neuesten Compass 3.2.3 muß ich nun die Config auch nicht mehr anpassen. Das passt alles so: Compass config und schon kanns losgehen. In der neuesten Version ist auch der alte Fehler behoben, daß Compass den Pfad zu sich selber unter Windows nicht findet. Man kann nun also einfach Compass watch schreiben, und schon wird automatisch kompiliert, auch mit Cygwin.
Chaka!

Bild von derSteffen
derSteffen

Hallo, dass ist wirkich schön erlätert, aber kann man SCSS oder SASS oder Compass (ist ja lles irgendwie das gleiche) auch verwenden, wenn das CSS-Fiel bereits online ist und man mit Hilfe von FileZilla und Notepad++ sein CSS-File annpassen, bzw. weiterentwickeln möchte. Oder basiert das alles auf lokale Umgebungen. Auf meinen Server ist kein Rugby oder SCSS isntalliert. Es ist ein Apache-Sever und ich habe auf die Konfiguration keinen Zugriff.

Vielen Dank

MfG Steffen

Anja Schirwinski user image
aschiwi

Hi Steffen, ich würde dir empfehlen das lokal zu machen. ScoutApp (http://mhs.github.com/scout-app/) kannst du bei dir installieren und ganz fix einrichten. Du bearbeitest dann deine scss-Datei, ScoutApp sorgt dafür, dass die Änderung in die .css-Datei kommt und anschließend lädst du beides auf den Server.

Bild von derSteffen
derSteffen

Danke für den Tipp. Ich werde das mal testen und mich durcharbeiten aber das direkte Online-Arbeiten, macht doch dann mehr Sinn um die Änderungen gleich zu sehen, da ich eine CMS-Seite immer online entwickle.

Vielen Dank

MfG Steffen

Bild von Fabian Pecher
Fabian Pecher

Super!
Hat mir echt weitergeholfen!

Bild von Maik
Maik

@ aschiwi - nutze scout seit einiger Zeit für ein paar projekte offline. neue plugins installieren wäre ein thema - z.b. ist bei mir das rgbapng plug glaube ich nicht vorhanden - wie kann man das checken?

Anja Schirwinski user image
aschiwi

Hi Maik,
meinst du https://github.com/aaronrussell/compass-rgbapng?
Ich würde meinen, dass das nicht in Scout dabei ist, da in Scout eher wenige Plugins enthalten sind, und dann rgbapng selber installieren und includen, wie es auf deren Github-Seite zu sehen ist.

Bild von Maik
Maik

@ aschiwi - gem install compass-rgbapng, das meinst Du oder? Wie gesagt - Scout ist bei mir offline installiert, kein Zugriff auf das online Repository. Wollte das Plug jetzt manuell einfügen, bin das von Contao Plugs so gewohnt ;-) über die Ordnerstruktur. Suche jetzt nach einer Lösung, dass auch mit Plugs für Compass zu machen. Bin schon soweit, dass das @import funktioniert, nur es kommt kein valides CSS heraus.

/* line 3440, ../scss/main.scss */
.layouttest-article {
background: png_base64(rgba(0, 0, 0, 0.2));
background: rgba(0, 0, 0, 0.2);
}

Anja Schirwinski user image
aschiwi

Ich hab das leider noch nie verwendet, deswegen bin ich wohl keine große Hilfe :)

Bild von Maik
Maik

Es gibt eine Einschränkung bei Scout. Das Einbinden von RubyGems, also anderen z.B. Plugins wie z.B. rgbapng, ist nicht vorgesehen. Eine Self-made Lösung bietet der Entwickler momentan nur für OSX.

https://github.com/mhs/scout-app/wiki/Using-RubyGems-with-ScoutApp

Für mich galt deswegen heute "back to the commandline" :-), obwohl das arbeiten mit scout schon praktisch war.

Anja Schirwinski user image
aschiwi

Danke für die Rückmeldung, das ist ja sehr schade für Nicht-OSX-Nutzer.

Bild von eigentor
eigentor

Also ich find das sowieso nicht so schlimm, von der Kommandozeile zu arbeiten. Wenn alles installiert ist, ist das Einzige, was man bei Beginn der Arbeiten machen muß, in den Theme Ordner zu gehen und über die Konsole ein "compass watch" einzugeben und dieses Konsolenfenster offen zu lassen, dann wird solange auch alles automatisch konvertiert.

Und, wie hier festgestellt, hat man alle Optionen, Plugins einzubinden. Vor allem auf SUSY möchte ich doch nicht verzichten.

Anja Schirwinski user image
aschiwi

@eigentor: Ah das klingt ja dann doch gar nicht so unkomfortabel. Ich erinnerte mich nur daran, wie du uns vor nun doch schon sehr langer Zeit SASS vorgestellt hast und bei jeder Änderung in die Konsole wechseln musstest um irgendeinen Befehl einzugeben :)

Bild von Maren Lange
Maren Lange

Schönen Dank für die Super-Anleitung. Als eingefleischter Windows-Nutzer mal 'ne Frage. Wie kann ich Compass updaten, falls benötigt?
Maren

Bild von Maren Lange
Maren Lange

Schönen Dank für die Super-Anleitung. Als eingefleischter Windows-Nutzer mal 'ne Frage. Wie kann ich Compass updaten, falls benötigt?
Maren

Bild von eigentor
eigentor

Einfach "gem install compass" auf der Konsole eingeben. Das installiert die neueste Version von Compass. Er überschreibt nicht das alte, sondern legt einen neuen Ordner mit dem neuen neben der älteren Version an, verwendet dann aber meine ich das Neuere.

In Cygwin ist der Pfad bei mir cygwin\lib\ruby\gems\1.9.1\gems.

Bild von Maren Lange
Maren Lange

Danke werd ich testen sobald eine neue Version von compass im Download-Repository zur Verfügung steht.
Gruß aus dem verschneiten Norden

Bild von eigentor
eigentor

Da ich Compass und SUSY gerade auf meinem Rechner neu installiert habe, hier Updates von der Install-Front:
In einem meiner Kommentare (Kommentar #931, wenn man über den Titel hovert) bin ich mit den Versionsnummern durcheinandergekommen.
Die aktuelle Version von SASS ist 3.2.7 (im Kommentar war es noch 3.2.3). Die aktuelle Compass-Version ist 0.12.2. 0.13 gibt es wohl schon, wenn man gem install compass ausführt, wird aber noch 0.12.2 installiert und es funktioniert auch alles damit.

Das händische Vorgehen für Cygwin, Ruby Gems zu installieren scheint nicht mehr notwendig zu sein. Wenn man Ruby über die setup.exe von Cygwin installiert, wird Gems 1.9.1 mitinstalliert und es funktioniert.

Man muß also nur das machen und am einfachsten gem install susy eingeben, und schon ist man fertig und ready to go. Sehr schön. Die Schitte wie gem update --system kann man trotzdem durchführen, ich habe nicht im Detail getestet, ob es notwendig ist, geschadet hat es nicht. Enjoy!

Neuen Kommentar schreiben