2015-02-05 20 views
4

我想從我的assets/stylesheets/目錄中編譯* .less資源。我有一個文件包含在這個目錄中,這是masterpage.less較少的資源沒有編譯播放2.3.7

我在我的plugins.sbt文件中添加了sbt插件以減少 addSbtPlugin("com.typesafe.sbt" % "sbt-less" % "1.0.6")

Play documentation說:

在播放可編譯資產必須在應用程序/資產目錄進行定義。 它們由構建過程處理,LESS源被編譯成標準CSS文件 。生成的CSS文件作爲 標準資源分發到與非託管 資產相同的公共/文件夾中,這意味着一旦編譯後,使用它們的方式沒有區別。

對此我做的,所以我很困惑,爲什麼我的資源沒有被編譯成public/

這裏是我的路線:

GET /assets/*file controllers.Assets.at(path="/public", file) 
GET /vassets/*file controllers.Assets.versioned(path="/public", file: Asset) 
GET /webjars/*file controllers.WebJarAssets.at(file) 

這是我在嘗試到CSS頁面在我的HTML文件鏈接:

<link rel="stylesheet" media="screen" href="@routes.Assets.at("stylesheets/masterpage.css")"/> 

,最後,這裏是我在我的控制檯得到的錯誤:

GET http://localhost:9000/assets/masterpage.css 

回答

6

默認情況下,sbt-less僅查找名爲main.less的文件。如果你想使用不同的文件,你必須在build.sbt中指明它。

includeFilter in (Assets, LessKeys.less) := "masterpage.less" 

如果要包括所有LESS文件,使用通配符:

includeFilter in (Assets, LessKeys.less) := "*.less" 

這是不是默認的,因爲你通常從main.less減少進口文件。

+1

所以這個工作,但OP中的文本通道似乎是誤導。我將其解釋爲意味着應用/資產目錄中的任何'* .less'文件都將被編譯。如果我有100個「較少」的文件,我不會將它們包含在該過濾器中? – 2015-02-05 20:33:34

+1

你通常會從你的main.less中導入它們,所以你只有一個.js輸出文件。或者使用通配符。 – 2015-02-05 20:48:27