在Play2.x中如何uglify js模板

时间:2015-09-18 17:15:42

标签: playframework production-environment

在我的一个Play2.4应用程序(Scala)中,我有通过Twirl(模板引擎)生成的JS文件,因此我可以使用内部变量。

在Prod中有没有一种方法可以缩小这些JS文件?

2 个答案:

答案 0 :(得分:1)

您可以尝试的一种方法是创建一个自定义Play过滤器,它使用基于Java的压缩器来实现JavaScript。这是我发现的一个例子: https://github.com/yui/yuicompressor/blob/master/src/com/yahoo/platform/yui/compressor/JavaScriptCompressor.java

另一种方法是使用一个模板,将生成的JS传递给上面的类。

答案 1 :(得分:1)

您可以使用sbt-uglify。首先,您需要将插件添加到plugins.sbt文件中:

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

接下来,修改项目build.sbt文件并启用sbt-web:

lazy val root = (project in file(".")).enablePlugins(SbtWeb)

声明uglify sbt-web插件执行:

pipelineStages := Seq(uglify)

这将使构建在制作发布包(使用activator dist)时丑化您的javascript资产。 如果您想在开发环境中测试uglify,请改用以下行:

pipelineStages in Assets := Seq(uglify)

最后,您需要修改twirl模板中加载javascript资源的方式。而不是@ routes.Assets.at(“something.js”),现在使用@ routes.Assets.versioned(“something.js”)