2015-11-19 95 views
0

我在编写一个编译sass文件的set-web插件。我遵守约定,名称以“_”开头的文件不是直接编译的,但它们可以包含在其他文件中。我试图通过使用下面的文件过滤器要做到这一点:带有文件依赖关系的SBT-web增量编译

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-网络1.2.2

回答

0

原来的路径包含的文件格式不正确。解决这个问题后,增量编译包含的文件可以很好地工作。