【发布时间】:2016-02-29 23:59:10
【问题描述】:
我开始使用 GNU Make 作为我的前端构建工具,而且大多数东西都很好用。唯一令人讨厌的是,当其中一个步骤出现错误时,编译似乎并没有停止。 Makefile 的相关部分:
js_files=$(filter-out $(ignore_js),$(wildcard \
js/ll/*.js js/ll/**/*.js))
ignore_js=js/ll/dist% js/ll/%.min.js
%.min.js: %.js
@echo ">>> Uglifying $?"
@$(BABELJS) $(BABELJSFLAGS) $? | $(UGLIFYJS) --source-map $(UGLIFYJSFLAGS) > $@
min_js_files=$(js_files:%.js=%.min.js)
main.js: $(min_js_files)
@echo ">>> Concatenating JavaScript"
mkdir -p $(DIST_DIR)
cat $^ > $(DIST_DIR)$@
prod: main.js clean
运行make prod 得到的输出如下所示:
>>> Uglifying js/ll/DateEx.js
SyntaxError: js/ll/DateEx.js: Invalid number (22:36)
20 | day = today.getDate();
21 | }
> 22 | return new Date(year, month, day, 01, 0, 0);
| ^
23 | }
24 |
25 | function newDateS(s)
>>> Uglifying js/ll/Anonymization.js
>>> Uglifying js/ll/DummyStorage.js
(...)
我觉得这是因为这些步骤是并行运行的,但我对 Make 一无所知以支持这一点。当其中一个步骤返回非零时,如何停止编译?
【问题讨论】: