Play Framework javascript文件缩小/隐藏来源

时间:2016-02-04 15:21:38

标签: playframework sbt playframework-2.3 uglifyjs

我想在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] ])?

提前致谢, 罗布

1 个答案:

答案 0 :(得分:0)

好,

我找到了解决问题的方法。我添加了一个过滤器来过滤掉 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"

播放现在正在创建所有缩小的js.min文件。之后,除了min.js文件之外, javascripts / functions 中的所有文件都会被过滤掉。我希望这会有所帮助。

罗布