встряхните сборку, не создавая файл для каждого входного файла - PullRequest
1 голос
/ 31 марта 2019

Сборка .html файлов из .md файлов для веб-сайта, у меня есть несколько .md файлов, которые не должны выдавать .html (например, потому что не готовы к публикации). Как лучше всего добиться этого с shake?

У меня есть want для html-файлов и правило, которое ищет соответствующий .md файл, но некоторые не производят остановки .html и shake с ошибка Error, rule finished running but did not produce file:.

Как лучше всего разобраться с этим делом?

1 Ответ

2 голосов
/ 01 апреля 2019

Текущее ограничение заключается в том, что каждый файл должен давать результат. Некоторые другие системы сборки немного более небрежны в этом, но мой опыт показывает, что это почти всегда источник ошибок - хотя в некоторых случаях это полезно (например, ваше). Варианты:

  • Если вы можете легко обнаружить, что файл не требует создания выходных данных, вы можете сделать это до want, а именно, превратив want в action, который вызывает need, но только на подмножестве выходов.
  • Если обнаружение, что вам не нужно создавать что-либо, является дорогостоящим, у вас может быть правило, которое всегда создает файл, но иногда создает пустой файл, а затем отдельное правило, которое зависит от этого файла, и копирует только те, которые имеют содержание.

К сожалению, ни одна из этих ситуаций не является идеальной. В какой-то момент Shake имел возможность сделать невозможным создание файла действительным результатом, который можно было бы повторно ввести, если бы был достаточный спрос.

...