Инкрементная компиляция SBT-web с файловыми зависимостями
Я пытаюсь написать плагин set-web, который компилирует sass-файлы. Я придерживаюсь соглашения, что файлы с именами, начинающимися с "_", не компилируются напрямую, но могут быть включены в другие файлы. Я попытался сделать это с помощью следующего фильтра файлов:
excludeFilter in sassify := HiddenFileFilter || "_*"
Измененные исходные файлы затем компилируются как:
val results = incremental.syncIncremental((streams in Assets).value.cacheDirectory / "run", sources) {
modifiedSources: Seq[File] =>
if (modifiedSources)
streams.value.log.info(s"Sass compiling on ${modifiedSources} source(s)")
val compilationResults: Map[File, (OpResult, Seq[Problem])] = modifiedSources
.map(inputFile =>
inputFile -> doCompile(inputFile)
).toMap
if (compilationResults.nonEmpty)
streams.value.log.info(s"Sass compilation done. Compiled ${compilationResults.size} file(s).")
(compilationResults.mapValues(_._1), compilationProblems.values.flatMap(_._2))
}
Обратите внимание, что когда функция doCompile возвращает OpSuccess, я проверяю, что любой включенный файл включен в параметр readFiles.
К сожалению, когда один из импортированных файлов (начиная с _) изменяется, включаемый файл не перекомпилируется. Есть идеи, как я могу это исправить?
Я использую scala 2.11.7 и sbt-web 1.2.2
1 ответ
Оказывается, путь к включенным файлам был искажен. После исправления, инкрементная компиляция включенных файлов работала отлично.