我将.coffee文件分开,我已经使用Makefile将它们编译成多个相应的.js文件。我的规则:
tmp/coffee/%.js: src/js/%.coffee
coffee --compile --output $(@D) $?
看起来像这样:
$ make static
coffee --compile --output tmp/coffee/global src/js/global/admin.coffee
coffee --compile --output tmp/coffee/global src/js/global/ads.coffee
我想优化我的构建过程,以便调用咖啡编译器一次编译所有更新的文件。这对于干净的构建尤其重要。
所以它看起来像这样:
$ make static
coffee --compile --output tmp/coffee/global src/js/global/ads.coffee src/js/global/admin.coffee
答案 0 :(得分:1)
您已经在使用$?
,您真正需要的是让目标依赖于所有文件。也许你想保留一个单独的标志文件,比如.built
:
.built: $(wildcard src/js/global/*.coffee)
coffee --compile --output tmp/coffee/global $?
touch $@
您可能希望重构现有的Makefile,这样就不会有任何代码重复。
我假设您的所有文件都在global
中,就像您的示例所说,但不是您现有的代码。如果有多个子目录,则无法一次性编译它们(--output
参数可能每个都不同。)