Инкрементная компиляция 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 ответ

Решение

Оказывается, путь к включенным файлам был искажен. После исправления, инкрементная компиляция включенных файлов работала отлично.

Другие вопросы по тегам