Инструмент сборки Google Bazel позволяет достаточно легко объяснить, что каждый файл CoffeeScript в определенном дереве каталогов должен быть скомпилирован в соответствующий выходной файл JavaScript:
[genrule(
name = 'compile-' + f,
srcs = [f],
outs = [f.replace('src/', 'static/').replace('.coffee', '.js')],
cmd = 'coffee --compile --map --output $$(dirname $@) $<',
) for f in glob(['src/**/*.coffee'])]
Но учитывая, скажем, 100 файлов CoffeeScript, это вызовет инструмент coffee
100 раз, добавляя много секунд к процессу компиляции. Если вместо этого можно было бы объяснить Bazel, что команда coffee
может принимать множество входных файлов в качестве входных, тогда файлы можно было бы объединить вместе и предложить меньшее количество coffee
вызовов, позволяя амортизировать время запуска процесса для большего количества файлов, чем только один.
Есть ли способ объяснить Базелу, что coffee
может быть запущен с множеством файлов одновременно?