我正在使用Makefile來幫助爲我的應用程序中的JS執行構建步驟。目標是使用Make的能力只處理修改後的文件以防止無關複製等。使用make build /最小化已更改的JS文件
要構建JS你需要
- 副本從主dev目錄下原來的.js文件到一個build目錄
- 最小化複製的文件,並創建該文件的版本-min.js
- 生成一個meta.js,其中包含組合加載器的內置JS文件中的YUI模塊信息。
所以我一直在努力向後工作的Makefile。 meta.js取決於-min.js取決於$builddir/b/*.js
這是從%origdir/*.js
複製在貫穿東西看,似乎我應該能夠使用%的.js爲了捕捉任何匹配的文件,但是當我嘗試這我得到:
make: *** No rule to make target `bookie/static/js/build/b/%-min.js', needed by `bookie/static/js/build/b/meta.js'. Stop.
這就是我正在與誰一起工作,任何人都知道我做錯了什麼?我希望當我make js
它複製改變後的.js文件,縮小它們,然後重新生成meta.js.
# Makefile to help automate tasks in bookie
WD := $(shell pwd)
PY := bin/python
BOOKIE_JS = bookie/static/js/bookie
JS_BUILD_PATH = bookie/static/js/build
JS_META_SCRIPT = $(PY) scripts/js/generate_meta.py
EXTENSION = $(WD)/extensions
CHROME_BUILD = $(EXTENSION)/chrome_ext/lib
# JAVASCRIPT
#
# Javascript tools for building out combo loader build directory, out meta.js,
# and syncing things over to the chrome extension directory.
.PHONY: js
js: $(JS_BUILD_PATH)/b/meta.js
$(JS_BUILD_PATH)/b/meta.js: $(JS_BUILD_PATH)/b/%-min.js
echo "META"
$(JS_META_SCRIPT) -n YUI_MODULES -s $(JS_BUILD_PATH)/b/ \
-o $(JS_BUILD_PATH)/b/meta.js \
-x -min.js$
$(JS_BUILD_PATH)/b/%-min.js: $(JS_BUILD_PATH)/b/$*.js
echo "MIN"
rm $(JS_BUILD_PATH)/b/meta.js || true
scripts/js/jsmin_all.py $(JS_BUILD_PATH)/b
$(JS_BUILD_PATH)/b/%.js: $(BOOKIE_JS)/$*.js
echo "Initial"
cp $? $(JS_BUILD_PATH)/b/
cp $? $(CHROME_BUILD)/
.PHONY: clean_js
clean_js:
rm -rf $(JS_BUILD_PATH)/* || true
'$ *'只能在食譜中使用,不在依賴關係中,請使用'%' – reinierpost 2012-04-03 08:44:49
'-min.js $'中的'$'做什麼? – reinierpost 2012-04-03 08:46:52
對不起,我認爲$是剩餘的exeriments只匹配-min文件,因爲-main和non-min文件都在該build目錄中。 – Rick 2012-04-03 10:56:22