2016-11-10 99 views
1

我們有兩個構建我們所有JS的目標,一個獲取文件的完整列表並將其傳遞給transpile腳本,另一個只獲取更改後的文件並將其傳遞到transpile腳本。問題是,如果您有更改的文件,它會爲每個文件一次執行一個匹配目標。Makefile的目標是一次構建所有匹配的文件

當前的目標:

.PHONY: build-all 
build-all: 
    FILE_LIST="$(RAWJSFILES)" ./scripts/transpile.js 

$(BUILD)/app/%.js: $(SRC)/app/%.js 
    FILE_LIST="$(SRC)/app/$*.js" ./scripts/transpile.js 

是否有可能爲目標,以獲取所有匹配的改變,那麼它可以傳遞給transpile腳本,使其只執行一次文件?謝謝!

回答

0

你不會說你想如何工作,我不熟悉JavaScript黑客或「transpile」,所以我不能猜測。

但是如果你想始終運行在,因爲它是對最近一次運行已更改的任何文件的腳本的目標,你可以使用類似:

ALLFILES := $(wildcard $(SRC)/app/*.js 

build-all: $(ALLFILES) 
     FILE_LIST="$?" ./scripts/transpile.js 
     @touch [email protected] 

$?討論,請參閱Automatic Variables

這有問題,但由於您的問題沒有明確定義,因此不清楚他們是否會影響您。

+0

優秀感謝這部作品正是我是如何希望它會。我認爲使用'$?'是答案,但我沒有想過使用一個金絲雀檔案作爲比較者。 – hatch