我想让我的编译任务依赖于一个myTask
相当昂贵的任务,但只有在自定义指标自上次运行以来发生变化时才应该运行。假设我有一个函数myCriterion : State => String
,它返回我的自定义标准的规范表示。
理想情况下,我想编译依赖myTask onlyIf myCriterion changed
或类似的东西。我看到一堆东西Tracked.inputChanged
,FilesInfo.*
看起来很相关,但我找不到任何关于如何使用它们的迹象。在幕后,我想myTask
运行myCriterion
,检查它是否存在磁盘上的缓存版本,如果它们匹配,则什么都不做。如果它们不匹配,我希望它运行逻辑,myTask
然后将当前输出写入myCriterion
缓存,这样我们下次就不会不必要地执行任务(因为它每次只会产生相同的输出)。myTask
无论是否变成 nop ,编译都应该发生。