问题描述
我的大脑现在可能被炸了(已经连续3天在此Shakefile上进行黑客攻击了),但是我只是不知道如何在Shake中表达“单向”依赖关系?
我正在构建(生成)数百个HTML文件,为了使其正常工作,它们需要生成一个公共CSS文件。如果我说类似...
"**.rst" %> \out -> do
need [cssFile,templateFile]
-- compile RST => HTML
...如果公用CSS文件发生更改,则会导致重新构建所有HTML文件!
如何在shake
中表达以下内容:
- 如果已构建
x
,请确保也已构建y
- 但是,如果
y
发生了变化,则x
不需要重建。
解决方法
您可能正在从文档中寻找orderOnly
:
定义仅订购的依赖关系,这些依赖关系将始终在继续操作之前构建,但不是此操作的依赖关系。对于定义您认为可能是真实依赖项的生成的依赖项最有用。如果事实证明它们是真实的依赖项,则应在之后添加一个显式依赖项。
它与您的需求不完全匹配(在规则继续执行之前您并不需要真正构建它),但是它应该足够接近您想要的东西。