2009-06-17 11 views
5

Ich möchte Javascript in yui Kompressor komprimieren, Wie schreibe ich Make-Datei für komprimieren Javascript.Makefile, die Javascript komprimiert

Weil Grammatik schwierig ist und es nicht versteht, Könnten Sie mir ein Beispiel Makefile für mich geben?

+0

Ich weiß ehrlich nicht, warum jemand damit mehr stört. Geben Sie Ihrem JS einfach die gzip-Kodierung und machen Sie es fertig. Gzip komprimiert Text sehr effektiv. – SpliFF

+0

Natürlich erwarte ich, dass der Effekt die Effizienz überträgt. Außerdem erwarte ich den Effekt der leichten Schwierigkeit, meine js Codes zu lesen. – freddiefujiwara

+3

@SpliFF: Weil Minification gzip effizienter macht. Es macht einen Unterschied, wenn Sie mit einem großen aufgeblähten JS-Framework stecken bleiben ... – Kornel

Antwort

10

Ihr Make-Datei würde in etwa so aussehen

code.compressed.js: code.js 
    compressor -o [email protected] $< 

Beachten Sie, dass die zweite Zeile mit einem Tabulatorzeichen eingerückt ist, nicht nur Räume. Das make-Dienstprogramm kümmert sich darum.

code.compressed.js ist der Name, in den die Datei geschrieben werden soll, code.js ist die zu komprimierende Datei und compressor ist das Programm, das die Komprimierung ausführt.

Das Flag -o zeigt die Ausgabedatei an und folgt der Konvention von Compilern und ähnlichen Tools. Ihre können sich unterscheiden; Überprüfen Sie die Dokumentation.

Die Variable [email protected] ist eine Makefile-Abkürzung für "das Ziel dieser Regel", code.compressed.js in diesem Fall. Ähnlich ist $< eine Abkürzung für "die erste Abhängigkeit dieser Regel". Diese Variablen sind nützlich, damit Sie sich nicht wiederholen müssen und auch keine doppelten Änderungen vornehmen müssen, wenn Dateien umbenannt werden.

Wenn Sie mehrere Dateien haben, die alle in einer einzigen Ausgabedatei komprimiert werden, können Sie sie alle auf der Abhängigkeitszeile setzen, und verwenden Sie dann die spezielle Variable $^ in der Buildregel alle von ihnen angeben:

code.compressed.js: code1.js code2.js 
    compressor -o [email protected] $^ 

Alternativ kann, wenn man sie jeweils separat komprimiert möchten, können Sie eine Musterregel schreiben und es für alle von ihnen:

TARGETS = code1.cjs code2.cjs code3.cjs 

all: $(TARGETS) 

%.cjs: %.js 
    compressor -o [email protected] $< 

defaults Sprechen Sie die erste Ziel für den Aufbau dass es sieht, das ist in diesem Fall all. Die Liste der zu komprimierenden Dateien wird durch den Inhalt der Variablen TARGET angegeben. Der % ist ein Platzhalterzeichen, das make ersetzt, um Regeln für übereinstimmende Quell- und Zieldateinamen zu generieren.

+0

Vielen Dank für eine sehr klare Antwort. Es gibt jedoch viele Quellcodes. Wie macht man diesen Fall? code1.js, code2.js ,,, – freddiefujiwara

+1

Bitte bearbeiten Sie diese Erweiterung in Ihre Frage, anstatt sie in einem Kommentar zu hinterlassen. – Novelocrat