Makefile, который сжимает JavaScript - PullRequest
5 голосов
/ 17 июня 2009

Я хочу сжать JavaScript в YUI компрессоре, Как написать файл Make для сжатия JavaScript.

Потому что грамматика сложна и не понимает ее, Не могли бы вы дать мне образец Makefile для меня?

1 Ответ

10 голосов
/ 17 июня 2009

Ваш make-файл будет выглядеть примерно так:

code.compressed.js: code.js
    compressor -o $@ $<

Обратите внимание, что вторая строка имеет отступ для символа табуляции , а не только для пробелов. Утилита make заботится об этом.

code.compressed.js - это имя, в которое должен быть записан файл, code.js - это файл для сжатия, а compressor - программа, выполняющая сжатие.

Флаг -o указывает выходной файл в соответствии с соглашением компиляторов и аналогичных инструментов. Ваш может отличаться; проверьте его документацию.

Переменная $@ является сокращением Makefile для «цели этого правила», в данном случае code.compressed.js. Точно так же, $< является аббревиатурой для «первой зависимости этого правила». Эти переменные полезны, так что вам не нужно ни повторяться, ни вносить повторяющиеся изменения при переименовании файлов.

Если у вас есть несколько файлов, которые будут сжаты в один выходной файл, вы можете поместить их все в строку зависимости, а затем использовать специальную переменную $^ в правиле сборки , чтобы указать все они:

code.compressed.js: code1.js code2.js
    compressor -o $@ $^

В качестве альтернативы, если вы хотите, чтобы они были сжаты по отдельности, вы можете написать шаблонное правило и использовать его для всех них:

TARGETS = code1.cjs code2.cjs code3.cjs

all: $(TARGETS)

%.cjs: %.js
    compressor -o $@ $<

По умолчанию строит первую цель, которую видит, в данном случае all. Список файлов для сжатия определяется содержимым переменной TARGET. % - это подстановочный знак, который заменяет генерацию правил для сопоставления имен исходного и целевого файлов.

...