JSCompress: Stapelkomprimierung für Frontend-Skripte und Styles

Zusammenfassung

JSCompress komprimiert und bündelt JavaScript und CSS im Stapel, ohne Editor: Ordner wählen, Tiefe und Dateitypen bestimmen, und es laufen der YUI Compressor für Styles und der Closure Compiler für Skripte.

Empfehlen
Name
JSCompress
Version
20221028
Preis
Kostenlos
Open Source
Proprietär
Aktualisiert
2026-10-06 12:46

Ein Kompressor für Ordner, nicht für Dateien

JSCompress ist ein kostenloses Werkzeug, das Frontend-Ressourcen im Stapel komprimiert, verschleiert und zusammenführt. Das interessante Wort in diesem Satz ist »im Stapel«. Eine Datei zu komprimieren ist ein gelöstes Problem mit einem Dutzend Lösungen; dreihundert Dateien nach jeder Änderung konsistent komprimiert zu halten, ist der Teil, der in einem echten Projekt tatsächlich schiefgeht.

Das Programm läuft eigenständig und hängt sich weder in einen Editor noch in ein Build-Skript. Das ist eine bewusste Position: Ein Ordner mit Skripten und Styles lässt sich auf einer Maschine komprimieren, die überhaupt keine Entwicklungsumgebung hat – und das ist oft genau die Maschine, auf der der Release zusammengestellt wird.

Hauptfenster von JSCompress

Zwei Engines unter einer Oberfläche

Für Styles arbeitet der YUI Compressor for .Net, für Skripte der Google Closure Compiler. Zwei Engines statt einer sind keine Unentschlossenheit – die beiden Sprachen brauchen unterschiedliche Behandlung. CSS zu komprimieren dreht sich vor allem um Leerraum, Kommentare und Redundanz, und das Ergebnis muss ein Stylesheet bleiben, das ein Browser zerlegen kann. JavaScript zu komprimieren ist ein anderes Problem: Über den Leerraum hinaus lassen sich Bezeichner kürzen und nicht erreichbarer Code entfernen, und das Ergebnis muss sich exakt wie vorher verhalten – eine deutlich strengere Anforderung, als es aussieht.

Etablierte Engines zu verwenden, ist auch der Weg, an dem üblichen Scheitern selbstgebauter Minifier vorbeizukommen: Ein Werkzeug, das nur Zeilenumbrüche entfernt, ist schnell geschrieben und ruiniert den ersten regulären Ausdruck, auf den es trifft.

Einstellungen je Typ
Optionen der Engines

Der Ablauf besteht aus vier Entscheidungen

Die Einstellungen werden einmal pro Dateityp in einem Dialog gewählt: welcher Modus für Skripte, für Styles, für Bilder und für die Präprozessor-Blätter gilt. Danach beginnt die Arbeit bei einem Ordner: Rechtsklick darauf, und die Dateien dieses Verzeichnisses werden komprimiert.

Zwei Fragen bleiben, und beide zählen. Die erste ist die Tiefe – nur die Dateien direkt im Ordner oder alles darunter mit. Die zweite ist, welche Dateitypen in diesem Lauf dazugehören. Dann startet die Komprimierung, und ein Ordner, der sonst einen Nachmittag einzelner Speichervorgänge gekostet hätte, ist in der Zeit erledigt, die das Lesen des Protokolls braucht.

Kontextmenü des Ordners
Tiefe wählen
Dateitypen

Kodierungen, wo Stapelwerkzeuge scheitern

Alles, was Quelldateien neu schreibt, muss wissen, wie sie geschrieben wurden. Ein über Jahre gewachsener Ordner enthält Dateien in mehreren Kodierungen, und ein Kompressor, der eine davon annimmt, zerstört jede Zeichenkette in den anderen. Die Erkennung ist unspektakulär und sie ist der Unterschied zwischen einem Lauf, dem man trauen kann, und einem, der danach Datei für Datei geprüft werden muss.

Dieselbe Sorge gilt für das Zusammenführen: Mehrere Skripte zu einer Datei zu verbinden funktioniert nur, wenn die letzte Zeile des einen und die erste Zeile des nächsten nicht zu etwas verschmelzen, das keiner von beiden gesagt hat.

Erkennung der Kodierung

Wenn es einen Fehler meldet, hat es meist recht

Eine bereits komprimierte Datei zu komprimieren kann in einem Fehler enden statt in einer kleineren Datei. Das ist kein Fehler, den man umgehen müsste: Minifizierter Code ist nicht mehr der Quelltext, den die Engine erwartet, und dieselbe Umformung ein zweites Mal anzuwenden kann Verhalten ändern oder Ausgabe erzeugen, die nicht mehr zerlegbar ist.

Die praktische Regel ist die, um die das Werkzeug gebaut ist: Quellen behalten, in einen anderen Ort komprimieren und die komprimierte Ausgabe als Produkt behandeln und nicht als etwas, das man weiter bearbeitet.

Protokoll der Komprimierung
Vorher und nachher

Wohin es passt

JSCompress ist für den Fall gedacht, dass das Frontend von Hand zusammengesetzt wird oder von einem Build, den jemand anderes pflegt und niemand anfassen will. Es ist ein Stapelwerkzeug mit Fenster, kein Build-System: Es überwacht keine Dateien, löst keine Abhängigkeiten auf und ersetzt keinen Task-Runner. Es nimmt ein Verzeichnis und gibt ein kleineres zurück, mit einem Protokoll darüber, was passiert ist – und das ist oft die vollständige Anforderung.