Wer oft mit vielen statischen Inhalten wie Stylesheets, JavaScripts und Bildern arbeitet, kennt das Problem: Verwaltung, Komprimierung und Einbindung gestalten sich oft nicht einfach. Hier kommt Assetic – ein Asset Management Framework für PHP – zum Einsatz. Das Tool verfügt neben üblichen Management-Operationen über verschiedene Filter, welche automatisierte Mutationen der Inhalte erlauben, verwaltet Caches und integriert sich in die Template-Sprache Twig.

Assetic ist ein Bestandteil des Symfony2 Frameworks, kann aber auch als Standalone benutzt werden. Für die Installation wird in beiden Fällen Composer empfohlen. Um die Beispiele zu implementieren, genügt eine lokale Installation der Symfony2 Standard Edition.

Asset Einbindung

Um Inhalte mit Assetic auszuliefern, genügt es, sie in der dafür vorgesehenen Ordnerstruktur unterhalb des Bundles abzulegen. Wurde das Bundle mit der kompletten Ordnerstruktur angelegt, sollten die folgenden Verzeichnisse bereits erstellt sein. Man muss sie nur noch mit Daten füllen.

Um die Assets nun einzubinden, bedient man sich einer Templatefunktion in Twig, welche neben vielen anderen Möglichkeiten auch Wildcards unterstützt:

Dieser Dreizeiler weist den Asset-Manager an, alle Assets, welche sich im entsprechenden Verzeichnis befinden, als HTML-Tag einzufügen. Mit dem optionalen Parameter ‘output’ wird das Ausgabeverzeichnis im HTML-Code angegeben. Dasselbe funktioniert natürlich auch mit JavaScripts:

Filter

Ein weiteres Feature von Assetic sind die Filter, welche die Inhalte vor der Ausgabe mutieren können. Beispielsweise können JavaScripts mit demYuiCompressor minimiert werden. Auch ein sehr nützlicher Filter ist der cssrewriter. Damit werden Bildpfade in Stylesheets automatisch bei der Auslieferung umgeschrieben. Da wir nicht nur mit CSS arbeiten, benutzen wir auch gleich noch den LESS Compiler. Zuerst müssen die Filter konfiguriert werden:

Nun werden die Filter im Template hinzugefügt:

Dev / Production

In der app_dev Umgebung werden die Files bei jedem Request gelesen, laufen durch alle Filter und werden dann vom Assetic Controller bereitgestellt. Das ist gut, da man jede Änderung direkt sehen kann:

In einer produktiven Umgebung ist dieser Prozess jedoch zu langsam. Dafür bietet Assetic die Möglichkeit, richtige Files generieren zu lassen, welche dann nur noch statisch ausgeliefert werden müssen:

Um die fertigen Assets zu generieren, muss in der Konsole dieser Befehl aufgerufen werden:

Da dieser Schritt bei jedem Deployment gemacht werden muss, empfielt es sich die Ausführung in einem Build-Prozess zu automatisieren.

Weiterführende Informationen

0 Kommentare

Einen Kommentar abschicken

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind markiert *