2015-11-19 79 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

原來的路徑包含的文件格式不正確。解決這個問題後,增量編譯包含的文件可以很好地工作。