Shake build: как разобраться с делом, когда нужный файл будет обнаружен позже

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

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

С другой стороны,

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

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

Что лучше?

1 ответ

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

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