2012-04-11 3 views
0

Код ниже не работает, но предназначен для иллюстрации того, чего я хочу достичь. Как я могу заставить этот код работать или есть лучший способ. Я хочу объединить все мои файлы CSS в один файл, но хочу, чтобы все файлы в BASE_CSS находились в верхней части этого файла.makefile minify files

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     

EDIT:
Чтобы задать порядок, просто сделать это:

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