Play Framework javascript 文件缩小/隐藏源

Play Framework javascript file minification / hide sources

我想在 Play Framework 2.3.10 中压缩我自己编写的 javascripts。我开始将我所有的脚本放到 app/assets/javascripts/*。此外,我在 conf/routes 中添加了以下路线:

GET   /assets/v/*file   controllers.Assets.versioned(path="/public", file: Asset)

我添加了以下行以使用 uglify 和 digest 启用缩小。 到 plugins.sbt:

addSbtPlugin("com.typesafe.sbt" % "sbt-uglify" % "1.0.3")

addSbtPlugin("com.typesafe.sbt" % "sbt-digest" % "1.0.0")

build.sbt:

pipelineStages in Assets := Seq(uglify, digest)

一切都很顺利。当我在浏览器中请求该网站时,我看到缩小的 javascript 文件 (.min.js) 以及正常(源)javascript 文件 (.js)。问题是生成了一个源映射并附加到缩小的 javascript。它链接到源文件。 我怎样才能避免这种情况?是否可以隐藏/拒绝访问源 javascript 文件,以便用户可以只请求缩小版本(即使试图通过直接访问源文件 url [ 例如 mypage.de/assets/v/javascripts/script.js ] ) ?

提前致谢, 罗布

好的,

我找到了解决问题的办法。我添加了一个过滤器来过滤掉我的 app/assets/javascripts/ 文件夹中的所有 .js 文件。我通过添加

来做到这一点
addSbtPlugin("com.slidingautonomy.sbt" % "sbt-filter" % "1.0.1")

到我的 project/plugins.sbt 文件。我更改了 build.sbt 中的 pipelineStages 以添加过滤器。

pipelineStages in Assets := Seq(uglify, digest, filter)

includeFilter in filter := new FileFilter {
  def accept(pathname: File): Boolean = {
    val path = pathname.getAbsolutePath.replaceAll("\\", "/")
    path.contains("javascripts/functions")
  }
}

excludeFilter in filter := "*.min.js"

Play 现在正在创建所有缩小的 js.min 文件。之后 javascripts/functions 中的所有文件都被过滤,除了 min.js 文件。希望对您有所帮助。

罗布