сделать сборку / сворачивание JS-файлов, которые изменились - PullRequest
1 голос
/ 26 января 2012

Я пытаюсь научиться создавать и встраивать Makefile в свое приложение, чтобы помочь мне в создании и минимизации моих файлов .js для использования приложения сервера combo loader позже.

Что я пытаюсь сделать, так это то, что когда я запускаю make, он копирует в каталог сборки только файлы .js, которые изменились с момента последнего запуска, а затем минимизирует этот файл и генерирует -min. JS копия. Наконец, мне всегда нужно создавать новый файл meta.js.

Я вставил то, что у меня работает ниже, проблема в том, что он выбирает не только измененные файлы .js, но и каждый файл при каждом запуске. Я что-то упустил в том, как заставить Make выбрать только измененные файлы в этом случае.

BOOKIE_JS = bookie/static/js/bookie
JS_BUILD_PATH = bookie/static/js/build
JS_META_SCRIPT = scripts/js/generate_meta.py

jsbuild: $(JS_BUILD_PATH)/bookie/meta.js

clean_js:
    rm -rf $(JS_BUILD_PATH)/*

$(JS_BUILD_PATH)/bookie/meta.js: $(BOOKIE_JS)/y*-min.js
    $(JS_META_SCRIPT) -n YUI_MODULES -s $(BOOKIE_JS)/y* -o $(JS_BUILD_PATH)/bookie/meta.js

$(BOOKIE_JS)/y*-min.js: $(BOOKIE_JS)/y*.js
    scripts/js/jsmin_all.py $(JS_BUILD_PATH)/bookie

    # this is the part that runs for each .js file and I'd like it to only run for the *modified* files
$(BOOKIE_JS)/y*.js: $(JS_BUILD_PATH)/bookie
    cp $@ $(JS_BUILD_PATH)/bookie/

$(JS_BUILD_PATH)/bookie:
    mkdir $(JS_BUILD_PATH)/bookie

clean: clean_js

.PHONE: clean clean_js

Токовый выход:

cp bookie/static/js/bookie/yapi.js bookie/static/js/build/bookie/
cp bookie/static/js/bookie/ymodel.js bookie/static/js/build/bookie/
cp bookie/static/js/bookie/ytagcontrol.js bookie/static/js/build/bookie/
cp bookie/static/js/bookie/yview.js bookie/static/js/build/bookie/
scripts/js/jsmin_all.py bookie/static/js/build/bookie
scripts/js/generate_meta.py -n YUI_MODULES -s bookie/static/js/bookie/y* -o bookie/static/js/build/bookie/meta.js

Я бы хотел видеть только cp измененных файлов.

1 Ответ

3 голосов
/ 26 января 2012

Я думаю, вы намеревались создать шаблонное правило , но использовали неверный синтаксис.Например, это:

$(BOOKIE_JS)/y*-min.js: $(BOOKIE_JS)/y*.js
    scripts/js/jsmin_all.py $(JS_BUILD_PATH)/bookie

означает, что каждый из файлов $(BOOKIE_JS)/y*-min.js зависит от файлов $(BOOKIE_JS)/y*.js - все они, а не только с тем же именем.Если вы сделаете это:

$(BOOKIE_JS)/y%-min.js: $(BOOKIE_JS)/y%.js
    scripts/js/jsmin_all.py $(JS_BUILD_PATH)/bookie

, тогда % необходимо заменить одинаковыми строками на каждой стороне, поэтому, например, $(BOOKIE_JS)/yapi-min.js зависит только от $(BOOKIE_JS)/yapi.js

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...