2015-02-05 21 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