摇动构建中的“单向”依赖项?

问题描述

我的大脑现在可能被炸了(已经连续3天在此Shakefile上进行黑客攻击了),但是我只是不知道如何在Shake中表达“单向”依赖关系?

我正在构建(生成)数百个HTML文件,为了使其正常工作,它们需要生成一个公共CSS文件。如果我说类似...

"**.rst" %> \out -> do
  need [cssFile,templateFile]
  -- compile RST => HTML

...如果公用CSS文件发生更改,则会导致重新构建所有HTML文件

如何在shake中表达以下内容

  • 如果已构建x,请确保也已构建y
  • 但是,如果y发生了变化,则x不需要重建。

解决方法

您可能正在从文档中寻找orderOnly

定义仅订购的依赖关系,这些依赖关系将始终在继续操作之前构建,但不是此操作的依赖关系。对于定义您认为可能是真实依赖项的生成的依赖项最有用。如果事实证明它们是真实的依赖项,则应在之后添加一个显式依赖项。

它与您的需求不完全匹配(在规则继续执行之前您并不需要真正构建它),但是它应该足够接近您想要的东西。