2014-11-05 51 views
6

this post我想我會了解sbt任務並創建自己的任務。我已經到了一個階段,我已經創建了一個在編譯之前運行的任務,並編譯了我的文章。編譯前的SBT任務沒有在觸發編譯中得到執行

val sassCompile = TaskKey[ Unit ]("sassCompile") 

sassCompile := { 
    SassCompiler.compile(baseDirectory.value) 
} 

watchSources <++= baseDirectory map { path => ((path/"app"/"assets") ** "*.scss").get } 

compile <<= (compile in Compile) dependsOn sassCompile 

我做兩件事情:

  1. 確保每一個變化SCSS觸發編譯
  2. 編譯之前,上海社會科學院編譯運行

那麼是什麼在起作用:

  1. 觸發編譯作品。每當我改變我的Scala,編譯觸發器。 (通常的行爲)。每當我在提到的路徑中更改.scss:app/assets/**,編譯觸發器。一切都很好。
  2. 當我在播放控制檯上手動鍵入編譯時,sass編譯也會觸發,我可以看到css文件的更改。

什麼不起作用:

編譯時自動觸發(由於調用的〜編譯或運行〜然後又做了改變(甚至沒有做更改),上海社會科學院編譯沒有得到。叫因此,當我做玩〜跑,我SASS編譯器不會被調用

編輯:。如果有幫助,here是一個類似的問題

回答

3

您需要的最後一行更改爲:

compile in Compile <<= (compile in Compile) dependsOn sassCompile 

對此的解釋您可以在「何時指定範圍」部分找到here

+0

對不起,我沒有把它作爲答案。因爲這現在創建了一個問題,即對於每個請求,我的sassCompile作業都會運行很多次。我無法找到次數的模式,但是爲了給出一個想法,在我請求網頁後,我的任務至少運行了20次。 – 0fnt 2014-11-16 16:54:00

+0

@ user247077你可以寫更多關於這個新問題。你如何運行你的應用程序,在哪種模式下運行?也許這個問題類似於[tihs](https://groups.google.com/forum/#!msg/play-framework/a9xfBiyAI6s/N3qrbrOAAtwJ) – rtruszk 2014-11-17 09:49:17

相關問題