2012-04-11 107 views
0

下面的代碼不起作用,但意在說明我想實現的目標。我如何使這個代碼工作或有更好的方法。我想將我的所有CSS文件合併到一個文件中,但要確保BASE_CSS下的所有文件都位於該文件的頂部。makefile縮小文件

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 2012-04-11 21:53:58