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“.