Script: CSS und JS mit YUICompressor optimieren

Nachdem ich vor einer Weile schon die automatische Optimierung von Bildern online gestellt habe, möchte ich nun auch eine Lösung für JavaScript und CSS bereitstellen.

Changelog

  • 28. Nov 2014 – SCANDIR Fix, Log Fix

Abhängigkeiten

Für die Optimierung verwende ich den „YUICompressor“, welcher in Java geschrieben wurde.
Das Script und die .jar-Datei müssen im selben Verzeichnis liegen, ich verwende ganz einfach für beides das Heimverzeichnis. Zuerst den YUICompressor herunterladen:

cd
wget --content-disposition https://github.com/yui/yuicompressor/releases/download/v2.4.8/yuicompressor-2.4.8.jar

Falls das Java JRE noch nicht installiert ist, kann es nun nachgeholt werden:

sudo apt-get install openjdk-6-jre-headless

Installation und Konfiguration

Das Script erstellen, wieder im Heimverzeichnis:

nano ~/opt_css_js.sh

Folgenden Inhalt einfügen:

#!/bin/bash
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin

#### CONFIG #####
SCANDIR="/var/www/"
LOGDIR="/var/log/opt_css_js"
CSS="yes"
JS="yes"
#################

[ -d $LOGDIR ] || mkdir -p $LOGDIR
DATE=`date +%d%m%Y_%H%M`

if [ $JS == "yes" ] ; then
for file in `find $SCANDIR -name *.js`; do java -jar yuicompressor-2.4.8.jar $file -o $file > $LOGDIR/opt_js_$DATE.log; done
echo "Done!" >> $LOGDIR/opt_js_$DATE.log
fi

if [ $CSS == "yes" ] ; then
for file in `find $SCANDIR -name *.css`; do java -jar yuicompressor-2.4.8.jar $file -o $file > $LOGDIR/opt_css_$DATE.log; done
echo "Done!" >> $LOGDIR/opt_css_$DATE.log
fi

Usage: ./opt_css_js.sh
Vorab als Ausführbar markieren: chmod +x opt_css_js.sh

Die Konfiguration ist selbsterklärend. Das rekursiv abzusuchende Verzeichnis kann definiert werden („SCANDIR“), genau wie der Speicherort der Logs („LOGDIR“). Die Logs werden mit dem aktuellen Datum versehen.
Mit den Optionen „CSS“ und „JS“ kann optional auf die Optimierung einer der beiden Typen verzichtet werden: Setzen auf „no“.

Schreibe einen Kommentar

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