2016-11-10 64 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