2009-06-17 15 views
5

Je veux compresser javascript dans yui compresseur, Comment écrire Créer un fichier pour compresser javascript. Parce que la grammaire est difficile et ne comprend pas, Pourriez-vous me donner un exemple de Makefile?Makefile qui compresse javascript

+0

Honnêtement, je ne sais pas pourquoi quelqu'un dérange avec cela plus. Juste servir votre JS avec l'encodage gzip et être fait avec. Gzip va compresser le texte très efficacement. – SpliFF

+0

Bien sûr, je m'attends à l'effet de transférer l'efficacité. De plus j'attends l'effet de la légère difficulté à lire mes codes js. – freddiefujiwara

+3

@SpliFF: parce que la minification rend gzip plus efficace. Cela fait une différence si vous êtes coincé avec un gros cadre JS gonflé ... – Kornel

Répondre

10

Votre makefile ressemblerait à quelque chose comme

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

Notez que la deuxième ligne est en retrait avec un caractère de tabulation , pas seulement des espaces. L'utilitaire make s'en soucie.

code.compressed.js est le nom que le fichier doit être écrit, code.js est le fichier à compresser, et compressor est le programme qui effectue la compression.

L'indicateur -o indique le fichier de sortie, en suivant la convention des compilateurs et des outils similaires. Le vôtre peut différer vérifiez sa documentation.

La variable [email protected] est le raccourci de Makefile pour "la cible de cette règle", code.compressed.js dans ce cas. De même, $< est l'abréviation de «première dépendance de cette règle». Ces variables sont utiles afin que vous ne deviez pas vous répéter, ni faire des changements en double lorsque les fichiers sont renommés.

Si vous avez plusieurs fichiers qui seront tous compressés dans un seul fichier de sortie, vous pouvez les mettre tous sur la ligne de dépendance, puis utiliser la variable $^ spéciale dans la règle de construction de préciser tous:

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

Alternativement, si vous voulez les chaque comprimé séparément, vous pouvez écrire une règle de modèle et l'utiliser pour tous:

TARGETS = code1.cjs code2.cjs code3.cjs 

all: $(TARGETS) 

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

Faire défaut à la construction de la première cible qu'il voit, ce qui est all dans ce cas. La liste des fichiers à compresser est donnée par le contenu de la variable TARGET. Le % est un caractère générique que make remplacera pour générer des règles pour la correspondance des noms de fichiers source et cible.

+0

Merci pour une réponse très simple. Cependant, il existe de nombreux codes sources. Comment faire ce cas? code1.js, code2.js ,,, – freddiefujiwara

+1

Veuillez modifier cette extension dans votre question plutôt que de la laisser dans un commentaire. – Novelocrat