2010-12-10 2 views
10

Я пытаюсь написать базовый make-файл, который объединяет несколько js-файлов в один, а затем делает то же самое, но сжимает их.Makefile для объединения 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 [email protected] $^ 

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

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

spark-dev.js: ${modules} 
    cat [email protected] $^ 
+0

Как, в частности, вы пытались использовать кошку? И что пошло не так? – slowdog

+0

@slowdog Я поставил код, который я пробовал в своем редактировании. – Olical

+0

@slowdog О, и что касается того, что пошло не так, это отразилось на содержимом всех файлов, которые были напечатаны: «make: *** [spark-dev.js] Ошибка 1 ' – Olical

ответ

9

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

spark-dev.js: ${modules} 
    cat > [email protected] $^ 

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

+0

Хмм, остановил ее печать содержимого, но это теперь бросает эту ошибку: «makefile: 23: *** отсутствует разделитель. Стоп.' – Olical

+0

Убедитесь, что у вас есть символ табуляции, а не пробелы, в начале строки с помощью команды 'cat'. Компиляция фрагментов файла makefile внутри и вне браузеров - это боль, потому что вкладки имеют тенденцию волшебно превращаться в пробелы ... – slowdog

+0

Хорошо, теперь он работает, но только выполняет первую команду, есть ли способ выполнить оба? – Olical

Смежные вопросы