【发布时间】:2015-10-08 04:04:10
【问题描述】:
我正在尝试为使用 Node.JS 和 Babel 转换 ES2015 的项目构建一个简单的 Makefile。以下是我目前的build 任务:
build:
.node_modules/.bin/babel $(SRC) --out-dir $(DIST) --experimental
我很好奇的是如何/如果我可以使用 Make 的目标仅在 $(SRC) 的内容发生变化时进行构建?
【问题讨论】:
我正在尝试为使用 Node.JS 和 Babel 转换 ES2015 的项目构建一个简单的 Makefile。以下是我目前的build 任务:
build:
.node_modules/.bin/babel $(SRC) --out-dir $(DIST) --experimental
我很好奇的是如何/如果我可以使用 Make 的目标仅在 $(SRC) 的内容发生变化时进行构建?
【问题讨论】:
Can I use Make's targets to only build if the contents of $(SRC) have changed?
是的
在 makefile 中,有一种简单的方法可以做到这一点,它被称为 prerequisite。
试试这个:
build: $(SRCS)
.node_modules/.bin/babel $(SRC) --out-dir $(DIST) --experimental
说明:
在决定是否运行build 目标时,make 将评估build(目标)是否“过时”。如果build 丢失或早于$(SRCS) 中的文件,则build 目标“已过时”。
“这个想法是目标文件的内容是根据先决条件中的信息计算出来的,所以如果任何先决条件发生变化,现有目标文件的内容就不再一定有效。”时间> GNU Makefile Rules
Makefile 规则参考:
targets : prerequisites
recipe
【讨论】:
SRC = ./src,我需要更具体,即添加一些名称模式吗?
build: $(wildcard $(SRC)/*.js)