【发布时间】:2017-11-24 15:32:36
【问题描述】:
我正在为网络摄像机构建一个图像,其中应用程序是用 C 编写的,但输出图像还包含一个捆绑的 web-app,如果部署到相机的嵌入式网络服务。
我们使用 make 构建图像,我使用 yarn 构建网络应用。我想创建一个makefile规则,这样我就不会在每次构建映像时都执行yarn build。目前我有:
$(WEBAPP_PATH)/build: $(WEBAPP_PATH)
@echo Building web-app...
@pushd $(WEBAPP_PATH); yarn build; popd;
和
$(PACKAGE_PATH)/html: $(WEBAPP_PATH)/build $(PACKAGE_PATH)/.dir
@echo Copy html...
mkdir -p $@
cp -r $(WEBAPP_PATH)/build/index.html $@/
cp -r $(WEBAPP_PATH)/build/js $@/
但是我怎样才能为构建捆绑包的需要编写更细粒度的检查呢?
更新:我的问题实际上是如何检测网络应用构建工件是否已更新,因为它们的名称是随机的。
【问题讨论】:
-
当您想要触发 web 应用程序的重建时所需的标准是什么——每当从相机写入新图像时?我从上下文中推测您看到
$(WEBAPP_PATH)/build目标在每次运行 Make 时都会执行。是否标记为PHONY? (我也假设'bundle'是$(WEBAPP_PATH)/build目录的内容) -
我想避免每次运行 make 时都重新构建 Web 应用程序。另一方面,我想检测捆绑包何时更新,并且我想在输入被触摸时运行纱线。
-
是的,我有点草率,但 WEBAPP_PATH 是 yarn.lock 文件和我找到的 web 应用程序项目的位置。 PACKAGE_PATH 是找到图像中间体的位置。捆绑包在全部上墨之前被复制到那里。
-
我很困惑为什么你会看到
$(WEBAPP_PATH)/build目标火灾。一旦该目录存在,您不应该看到它再次运行 yarn 步骤...除非它被标记为PHONY,或者您将其作为构建的一部分删除。 -
这确实是我要问的问题 - 理想情况下,我想用纱线输出的内容替换 $(WEBAPP_PATH)/build,但是从 index.html 中出现,生成的文件具有随机的名称。那么如何检测变化呢?