Makefile для объединения файлов js и создания сжатой версии - PullRequest
11 голосов
/ 11 декабря 2010

Я пытаюсь написать основной make-файл, который объединяет несколько файлов js в один, а затем делает то же самое, но сжимает их.

Пока у меня есть этот, который может сделать сжатую версию в порядке.

# Set the source directory
srcdir = src/

# Create the list of modules
modules =   ${srcdir}core.js\
            ${srcdir}sizzle.js\
            ${srcdir}json2.js\
            ${srcdir}ajax.js\
            ${srcdir}attribute.js\
            ${srcdir}content.js\
            ${srcdir}cookie.js\
            ${srcdir}css.js\
            ${srcdir}event.js\
            ${srcdir}json.js\
            ${srcdir}location.js\
            ${srcdir}opacity.js\
            ${srcdir}ready.js\
            ${srcdir}size.js\
            ${srcdir}init.js

# Compress all of the modules into spark.js
spark.js: ${modules}
    java -jar yuicompressor.jar -o $@ $^

Кто-нибудь знает, как мне добавить несжатую версию с именем spark-dev.js? Я пытался использовать кошку, но я не очень далеко. Это мой первый make-файл, который я когда-либо написал.

EDIT Я пробовал этот код с кошкой

spark-dev.js: ${modules}
    cat $@ $^

1 Ответ

10 голосов
/ 11 декабря 2010

Вы были почти там :-) Это должно работать:

spark-dev.js: ${modules}
    cat > $@ $^

Справочная информация: функция cat состоит в том, чтобы (попытаться) открыть все файлы, перечисленные в его командной строке, и выгрузить содержимое в стандартный вывод. Синтаксис > $@ понимается оболочкой как «создайте файл $@ и подключите к нему стандартный вывод этой команды», так что теперь мы получаем содержимое $^, объединенное в $@.

...