0

我使用shake 来建立一个网站(使用pandoc)。当文件转换为 pandoc 时,可能需要其他文件(css、参考书目、模板等),但 Shake 不知道,因为它是 pandoc 调用函数的内部,并且信息在使用的文件中,并且只是逐渐可见的。

我从阅读文档中得到的印象是,要求shake 调用的函数返回所用文件的列表,并在shake 中调用函数之后,使用返回的文件列表来调用 needneed调用的顺序是否重要?

或者,

(1) 我可以构建函数来只查找需要哪些其他文件(几乎完成了两次工作)并首先调用它们。或者,

(2)、将过程分解为多个步骤,每个步骤产生一个文件,然后开始一个新规则,从这个文件(和其他文件)向前推进并添加needs到那里。第二种解决方案构建中间文件并打破从 pandoc 到 html 的转换的逻辑流程。

什么是更好的?

4

1 回答 1

0

答案取决于所依赖文件的详细信息(例如 css、参考书目):

  • 如果它们是源文件,您可以在使用后添加依赖项,使用required
  • needed如果它们是由 Shake 本身生成的,则必须先确保它们存在才能使用。如果您可以静态预测哪些文件是所咨询的依赖项的超集,则可以使用orderOnly确保已构建规则可能needed依赖的所有文件,然后使用after 声明实际需要的文件。
  • 最后,如果您无法预测哪些文件是依赖项,并且您可能正在生成它们,那么最简单的方法是将部分计算运行两次。
于 2019-02-10T13:49:17.083 回答