2012-01-25 2 views
1

나중에 내 콤보 로더 서버 응용 프로그램을 사용하기 위해 .js 파일을 만들고 최소화하는 것을 돕기 위해 Makefile을 만들고 응용 프로그램에 빌드하는 방법을 배우려고합니다.은 변경된 빌드/최소화 된 JS 파일을 가지고 있습니다.

내가 수행하려고하는 것은 make를 실행하면 마지막 실행 이후 변경된 .js 파일 만 빌드 디렉토리로 복사 한 다음 해당 파일을 축소하고 -min을 생성합니다. .js 사본. 마지막으로 항상 새로운 meta.js 파일을 생성해야합니다.

내가 아래에서 작업 한 내용을 붙여 넣었으므로이 문제는 변경된 .js 파일 만 선택하지 않고 각 파일을 실행할 때마다 발생합니다. 이 인스턴스에서 변경된 파일 만 선택하는 방법에 뭔가 빠져 있습니다.

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 [email protected] $(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를보고 싶습니다.

답변

3

나는 pattern rule을 만들려고했지만 잘못된 구문을 사용했다고 생각합니다. 예를 들어,이 - 그들 모두 비슷한 이름을 가진뿐만 아니라 하나의

$(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)/yapi-min.js에 대한 $(BOOKIE_JS)/yapi.js

+0

감사에만 의존하므로

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

는 다음 %가, 양쪽에 같은 문자열로 교체해야 완전히 * % 대를 놓쳤다 – Rick

관련 문제