2009-06-17 24 views
5

Quiero comprimir javascript en yui compressor, Cómo escribir Make archivo para comprimir javascript.Makefile que comprime javascript

Porque la gramática es difícil y no la entiende, ¿Podría darme un archivo de muestra para mí?

+0

Honestamente, no sé por qué alguien se molesta más con esto. Simplemente envíe su JS con codificación gzip y termine con esto. Gzip comprimirá el texto de manera muy efectiva. – SpliFF

+0

Por supuesto que espero que el efecto transfiera la eficiencia. Además, espero el efecto de la ligera dificultad para leer mis códigos js. – freddiefujiwara

+3

@SpliFF: porque la minificación hace que gzip sea más eficiente. Hace una diferencia si estás atascado con un gran marco de JS inflado ... – Kornel

Respuesta

10

Su makefile sería algo como

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

Tenga en cuenta que la segunda línea tiene sangría con un carácter pestaña, no sólo los espacios. La utilidad make se preocupa por esto.

code.compressed.js es el nombre en el que se debe escribir el archivo, code.js es el archivo para comprimir y compressor es el programa que realiza la compresión.

El indicador -o indica el archivo de salida, siguiendo la convención de compiladores y herramientas similares. El tuyo puede diferir; revisa su documentación.

La variable [email protected] es una abreviatura Makefile para "objetivo de esta regla", code.compressed.js en este caso. Del mismo modo, $< es una abreviatura de "primera dependencia de esta regla". Estas variables son útiles para que no necesite repetirse, ni realizar cambios duplicados cuando se renombra un archivo.

Si tiene varios archivos que todos serán comprimidos en un único archivo de salida, se puede poner a todos en la línea de dependencia, y luego usar la variable $^ especial en la regla acumulación para especificar todos ellos:

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

Alternativamente, si los quieres comprimida cada una por separado, puede escribir una regla patrón y usarlo para todos ellos:

TARGETS = code1.cjs code2.cjs code3.cjs 

all: $(TARGETS) 

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

Hacer por defecto a la construcción del primer objetivo que ve, que es all en este caso. La lista de archivos para comprimir está dada por el contenido de la variable TARGET. El % es un comodín que sustituirá para generar reglas para coincidir con los nombres de archivo de origen y destino.

+0

Gracias por una respuesta muy simple. Sin embargo, hay muchos códigos fuente. ¿Cómo hacer ese caso? code1.js, code2.js ,,, – freddiefujiwara

+1

Edita esa expansión en tu pregunta, en lugar de dejarla en un comentario. – Novelocrat