动机
我目前正在开发一个使用 Angular.js 的 Java Play 应用程序。目前,我正在尝试根据功能重组我的公用文件夹。例如,与一个组件关联的所有 Javascript、模板文件等都将放在一个文件夹中,如下所示:
public
directives
component-1
component-1.template.html
component-1.js
component-2
component-1.template.html
component-2.js
scripts
app.js
stylesheets
main.css
现在,我尝试用我的 CSS 做同样的事情,并像这样拆分选择器:
public
directives
component-1
component-1.template.html
component-1.js
component-1.less
component-2
component-1.template.html
component-2.js
component-2.less
scripts
app.js
stylesheets
main.less
理想情况下,main.less
应该包含最少甚至没有 CSS,并且只导入 component-1.less
和 component-2.less
。
问题
但是,当我尝试这样做时,Play 似乎没有编译我的 less 文件。根据文档,Play 似乎只会在 app/assets
中编译较少的文件。
因此,我尝试将我的 public
文件夹的内容移动到 app/assets
。 Play 成功检测并编译了我的 less 文件,并将生成的 CSS 和 Javascript 移动到 public 文件夹,但没有移动我的模板 html 文件。
我还尝试将所有内容移回公用文件夹并从那里编译 less 文件,但 Play 要么抛出异常,要么完全忽略 less 文件,具体取决于我的配置。
我的问题
所以基本上,如果我尝试将文件放在 app/assets
文件夹中,.html
模板文件将被忽略。如果我尝试将文件放在 public
中,那么 .less
文件将失败。
显然,我可以拆分,只需将较少的文件放在 assets
中,将另外两个文件放在 public
中,但这违背了将相关文件放在一起的目的。
所以,我想我有三个问题。我不需要所有的人都回答——只要回答一个就足以解决我遇到的问题。我真的不在乎我是使用 public
还是 app/assets
-- 我只想将文件放在一起。
- 是否可以构建包含在公用文件夹中而不是
apps/assets
中的.less
文件? - 是否可以将 Play 配置为停止忽略
app/assets
中的.html
文件? - 是否有其他方法可以实现我正在寻找的目录结构?
这是我的 build.sbt
文件:
name := "my-project"
version := "1.0-SNAPSHOT"
scalaVersion := "2.10.3"
libraryDependencies ++= Seq(
javaJdbc,
javaEbean,
cache,
"org.projectlombok" % "lombok" % "1.14.4"
)
play.Project.playJavaSettings
def customLessEntryPoints(base: File): PathFinder = (
(base / "public" / "stylesheets" * "*.less")
)
play.Project.playScalaSettings ++ lesscSettings
lessEntryPoints := Nil
lesscEntryPoints in Compile <<= baseDirectory(customLessEntryPoints)
lesscOptions in Compile := Seq("--yui-compress", "--verbose")
我目前正在使用 play-lessc
插件。
最佳答案
如果您的设置不起作用,我想知道 lesscEntryPoints
的目的是什么。我还想知道您的问题是否应该标记为 Less。
play-lessc 允许您设置编译器选项 ( http://lesscss.org/#using-less-command-line-usage )。这些选项包括 --include-path=PATHS 设置包含路径。由 :. 分隔使用 ;在 Windows 上。
当您将 include-path
设置为 /public/
时,您可以执行 @import "stylesheets/project.less";
在 "apps/assets/main.less"和 @import "directives/component-1/component-1.less";
在 stylesheets/project.less
等等
关于java - 从 Java Play 中的同一位置提供 LESS、Javascript 和静态资源,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25087033/