Makefile, который сжимает JavaScript

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

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

1 ответ

Решение

Ваш 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 переменная. % является подстановочным знаком, который make заменит для генерации правил для сопоставления исходных и целевых имен файлов.

Другие вопросы по тегам