0

以下のコードは機能しませんが、私が達成したいことを説明するためのものです。このコードを機能させるにはどうすればよいですか、それとももっと良い方法がありますか。すべての CSS ファイルを 1 つのファイルに結合したいが、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
4

1 に答える 1

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))
于 2012-04-11T08:34:50.260 に答える