2009-06-17 13 views
5

Voglio comprimere javascript in yui compressor, Come scrivere Crea file per comprimere javascript.Makefile che comprime javascript

Perché la grammatica è difficile e non la capisco, Potresti darmi un Makefile di esempio per me?

+0

Sinceramente non so perché nessuno lo disturbi più. Servi il tuo JS con la codifica gzip e fallo con esso. Gzip comprimerà il testo in modo molto efficace. – SpliFF

+0

Naturalmente mi aspetto che l'effetto trasferisca efficienza. Inoltre mi aspetto l'effetto della leggera difficoltà nel leggere i miei codici js. – freddiefujiwara

+3

@SpliFF: poiché il minification rende gzip più efficiente. Fa la differenza se sei bloccato con un grande quadro JS gonfio ... – Kornel

risposta

10

makefile sarebbe simile

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

Nota che la seconda riga è rientrato con un carattere scheda, non solo gli spazi. L'utilità make si preoccupa di questo.

code.compressed.js è il nome che il file deve essere scritto, code.js è il file da comprimere, e compressor è il programma che fa la compressione.

Il flag -o indica il file di output, in base alla convenzione di compilatori e strumenti simili. I tuoi possono differire; controlla la sua documentazione.

La variabile [email protected] è la scorciatoia Makefile per "target di questa regola", code.compressed.js in questo caso. Allo stesso modo, $< è l'abbreviazione di "prima dipendenza di questa regola". Queste variabili sono utili in modo che non sia necessario ripetersi, né apportare modifiche duplicate quando i file vengono rinominati.

Se si dispone di più file che saranno tutti compressi in un unico file di output, tutti si può mettere sulla linea di dipendenza, e quindi utilizzare la variabile speciale $^ nella regola accumulo per specificare tutti loro:

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

in alternativa, se si desidera che ogni compressa separatamente, è possibile scrivere una regola modello e utilizzarlo per tutti loro:

TARGETS = code1.cjs code2.cjs code3.cjs 

all: $(TARGETS) 

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

Fai default a costruire il primo obiettivo che vede, che è all in questo caso. L'elenco dei file da comprimere è dato dal contenuto della variabile TARGET. Lo % è un jolly che verrà sostituito per generare regole per la corrispondenza dei nomi dei file di origine e di destinazione.

+0

Grazie per la risposta molto semplice. Tuttavia, ci sono molti codici sorgente. Come fare quel caso? code1.js, code2.js ,,, – freddiefujiwara

+1

Modifica questa espansione nella tua domanda, piuttosto che lasciarla in un commento. – Novelocrat