配置sbt-less插件的编译路径

时间:2014-11-17 14:50:18

标签: playframework less sbt playframework-2.3

我正在使用这个插件的play框架。我有public文件夹的以下结构;

├───app
│   ├───css
│   ├───img
│   ├───js
│   │   ├───apis
│   │   ├───config
│   │   ├───controllers
│   │   ├───directives
│   │   ├───filters
│   │   ├───locale
│   │   └───services
│   └───views
└───test

build.sbt中,我有以下内容;

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

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

LessKeys.rootpath in Assets := "public/app/css"

在我的main.scala.html中,我有以下链接标记;

<link rel="stylesheet" href='@routes.Assets.at("app/css/main.css")'>

最后,我的routes有以下内容;

GET      /assets/*file             controllers.Assets.at(path="/public", file)

然而,build.sbt中的配置较少似乎不起作用。我想编译public / app / css / main.less。我怎样才能做到这一点?

2 个答案:

答案 0 :(得分:1)

根据Play文档:

  

Play中的可编辑资产必须在app/assets目录中定义。

无需自述的自述文件:

  

为相对导入和网址中的网址重写设置rootpath。

似乎没有办法做到这一点,因为Play需要一个可以预期可编译资产而不是Scala / Java代码的地方。 rootpath键似乎只是用于在LESS文件中重写导入/ URL。

您需要的是:

├───app
│   ├───assets
│   │   ├───css
│   │   ├───img
│   │   └───js
│   │       ├───apis
│   │       ├───config
│   │       ├───controllers
│   │       ├───directives
│   │       ├───filters
│   │       ├───locale
│   │       └───services
│   └───views
└───test

答案 1 :(得分:0)

SbtWeb插件中定义的资产的默认路径是:app/assets

sourceDirectory in Assets := (sourceDirectory in Compile).value / "assets"

因此可以轻松覆盖:

sourceDirectory in Assets := (sourceDirectory in Compile).value / "path" / "to" / "assets"