我想在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] ])?
提前致谢, 罗布
答案 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 中的所有文件都会被过滤掉。我希望这会有所帮助。
罗布