2012-04-11 5 views
0

아래 코드는 작동하지 않지만 내가 성취하고자하는 것을 설명하기위한 것입니다. 어떻게이 코드를 작동 시키거나 더 좋은 방법이있을 수 있습니까? 모든 CSS 파일을 하나의 파일로 결합하고 싶지만 BASE_CSS 아래의 모든 파일이 해당 파일의 맨 위에 있는지 확인하고 싶습니다.메이크 파일 미니 파일

BASE_CSS = %reset.css %reset2.css %reset3.css 
IGNORE_CSS = %main.min.css $(BASE_CSS) 

CSS_FILES = $(filter-out $(IGNORE_CSS),$(wildcard \ 
    public/css/*.css \ 
    public/css/*/*.css \ 
    public/css/*/*/*.css \ 
)) 

minify: 
    cat $(BASE_CSS) $(CSS_FILES) > public/css/main.min.css 

답변

1

이 내가 당신이 원하는 무슨 생각을 할 것입니다 :

# Note the ":=". 
# If we use "=", it will run "find" every time ALL_CSS_FILES is mentioned. 
ALL_CSS_FILES := $(shell find public/css -name *.css) 

BASE_PATTERN = %reset.css %reset2.css %reset3.css 

BASE_CSS = $(filter $(BASE_PATTERN), $(ALL_CSS_FILES)) 

CSS_FILES = $(filter-out $(BASE_PATTERN) %main.min.css, $(ALL_CSS_FILES)) 

minify: 
     cat $(BASE_CSS) $(CSS_FILES) > public/css/main.min.css     

편집 :
순서를 지정하려면, 그냥 이렇게 :

BASE_CSS = $(filter %reset.css, $(ALL_CSS_FILES)) 
BASE_CSS += $(filter %reset2.css, $(ALL_CSS_FILES)) 
BASE_CSS += $(filter %reset3.css, $(ALL_CSS_FILES)) 
+0

감사합니다! reset.css, reset2.css 및 reset3.css의 순서를 지정하는 방법이 있습니까? – teggy