Shake build: как разобраться с делом, когда нужный файл будет обнаружен позже - PullRequest
0 голосов
/ 09 февраля 2019

Я использую Shake для создания сайта (с помощью pandoc).Когда файлы преобразуются в pandoc, могут потребоваться другие файлы (css, библиография, шаблоны и т. Д.), Но Shake не знает об этом, поскольку она является внутренней по отношению к вызывающей функции pandoc, а информация находится в используемых файлах и только постепенновидимый.

У меня сложилось впечатление от чтения документов, что запрос функции, вызванной shake, вернуть список использованных файлов и, после функции, вызванной shake, использовать возвращенный список файлов для вызова * 1003.*.Верно ли, что порядок, в котором вызывается need, имеет значение?

В качестве альтернативы,

(1) Я могу создавать функции, чтобы найти только те файлы, которые необходимы (почти всю работу)дважды) и позвони им первым.Или

(2), чтобы разбить процесс на этапы, каждый из которых приводит к файлу, а затем запустить новое правило, чтобы перейти из этого файла (и дополнительных файлов) и добавить туда needs.Второе решение создает промежуточные файлы и прерывает логический поток преобразования из pandoc в html.

Что лучше?

1 Ответ

0 голосов
/ 10 февраля 2019

Ответ зависит от сведений о файлах, от которых зависит (например, css, библиография):

  • Если они являются исходными файлами, вы можете добавить зависимость после их использования, используя required .
  • Если они генерируются самим Shake, вы не можете использовать needed без предварительного подтверждения их присутствия.Если вы можете статически предсказать расширенный набор файлов, с которыми связаны согласованные зависимости, вы можете использовать orderOnly , чтобы убедиться, что все файлы, от которых зависит правило , были построены, а затем используйте needed после того, как объявить, какие из них действительно необходимы.
  • Наконец, если вы не можете предсказать, какие файлы являются зависимостями, и вы можете их генерировать, тогда проще всего выполнить часть вычисления дважды.
...