摇动构建:如何处理以后发现所需文件的情况

时间:2019-02-09 10:32:27

标签: shake-build-system

我使用摇摇建立了一个网站(使用pandoc)。将文件转换为pandoc时,可能需要其他文件(css,参考书目,模板等),但摇动并不知道,因为它在pandoc调用函数内部,并且信息在使用的文件中,并且仅逐步可见。

我从阅读文档中得到的印象是,要求摇动调用的函数返回使用的文件列表,并在摇动调用的函数之后,要求使用返回的文件列表来调用 $('#mytables').DataTable( { order: [[ 0, "desc" ]], paging: false, "columnDefs": [ { "targets": 'no-sort', "orderable": false, } ], "initComplete": function(settings, json) { $("body").removeClass("loading"); //doesn't work... it has no time to show the loader... :-( console.log('done'); } }); need的调用顺序重要吗?

或者,

(1)我可以构建函数以仅查找需要哪些其他文件(将工作进行近两次)并首先调用它们。或者,

(2),以将该过程分为多个步骤,每个步骤生成一个文件,然后启动新规则以从该文件(以及其他文件)开始进行操作,并在其中添加need。第二种解决方案生成中间文件,并打破了从pandoc到html转换的逻辑流程。

有什么更好的?

1 个答案:

答案 0 :(得分:0)

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

  • 如果它们是源文件,则可以在使用它们后使用needed添加依赖项。
  • 如果它们是Shake本身生成的,那么您必须先确保它们存在才能使用needed。如果可以静态预测要查询依赖关系的文件的超集,则可以使用orderOnly确保已构建规则可能所依赖的所有文件,然后使用{{1 }}之后,宣布哪些是实际需要的。
  • 最后,如果您无法预测哪些文件是依赖项,并且您可能正在生成它们,那么最简单的方法是两次运行部分计算。