我正在创建一个 Makefile 来自动化我的 Django 应用程序的“构建”过程。第一步是压缩所有静态 CSS 和 JS 文件。到目前为止,这是我的 Makefile:
CSS_FILES = $(shell find static -type f -name "*.css")
CSS_GZ_FILES = $(CSS_FILES:.css=.css.gz)
JS_FILES = $(shell find static -type f -name "*.js")
JS_GZ_FILES = $(JS_FILES:.js=.js.gz)
all: static $(CSS_GZ_FILES) $(JS_GZ_FILES)
bower_components: bower.json
bower --config.interactive=false install
static: bower_components
python manage.py collectstatic --noinput
%.gz: %
gzip -9 -c -f $< > $@
clean:
rm -rf bower_components static
如果您不熟悉 Django,静态目标会将一堆 JS 和 CSS(以及更多)文件转储到static
目录中。
static
问题是,在目标运行之前无法确定 CSS 和 JS 文件的列表。所以第一次运行时make
,没有文件被压缩。collectstatic
我想要的是运行后要重新评估的 CSS、JS 文件列表。
我考虑过collectstatic
在运行 make 之前运行来解决这个问题,但collectstatic
它本身取决于不同的 make 规则。
如果它有帮助,这个 Makefile 将只能与 GNU Make 一起运行。