首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Shake:发出是否需要重建的信号

Shake:发出是否需要重建的信号
EN

Stack Overflow用户
提问于 2015-05-17 16:02:49
回答 1查看 124关注 0票数 3

我使用shake构建一堆静态网页,然后使用sftp将其上传到远程主机。当前,cronjob正在运行

代码语言:javascript
复制
git pull # get possibly updated sources
./my-shake-system 
lftp ... # upload

如果shake实际上没有重新构建任何东西,我希望避免运行最后一个命令。有没有办法告诉shake“运行命令foo,在所有事情之后,只有当你改变了一些东西!”?

或者,让shake报告它是否在进程退出代码中做了什么?

我想我可以添加一个依赖于所有可能生成的文件的规则,但这似乎是多余的,而且容易出错。

EN

回答 1

Stack Overflow用户

发布于 2015-05-18 04:00:32

目前还没有直接/简单的方法来确定是否构建了任何东西。对于更简单的构建系统,它也不是一个有用的概念,因为某些规则(特别是那些定义storedValue返回Nothing的规则)总是会“重新运行”,但很快就会决定不需要运行依赖于它们的规则。对Shake来说,这和重新运行是一样的。我能想到几种方法,哪一种最好可能取决于你的情况:

标记有趣的规则

您可以使用一个写入特定文件的函数来标记每个有趣的规则(生成需要上载的内容的规则)。如果该特定文件存在,则需要上载。这可能会稍微好一点,就像你运行了多个Shake,在第一次有变化但第二次没有变化时,文件仍然存在。如果有意义,可以使用IORef而不是文件。

使用性能分析

Shake具有相当高级的分析功能。如果您传递shakeProfile=["output.json"],它将生成一个JSON文件,详细说明构建内容和构建时间。运行由Int索引,0表示最近的运行,并且排除不生成任何内容的任何运行。如果你有一个总是触发的规则(例如,用alwaysRerun写到一个虚拟文件),那么如果有任何东西同时触发,它就会重新构建。

查看.shake.database 文件大小

Shake有一个数据库,存储在shakeFiles下。每一次不感兴趣的运行,它都会增长一个相当小的量(~100字节)-但给你的系统一个固定的大小。如果它的大小变化更大,那么它就做了一些有趣的事情。

在这些方法中,标记有趣的规则可能是最简单和最直接的(尽管确实存在忘记标记某些东西的风险)。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30284679

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档