加快Play 2.3.x版本中用于外部Webjar源的Javascript uglification

时间:2014-11-09 16:40:18

标签: javascript playframework sbt uglifyjs2 webjars

我使用Play框架2.3.6和Webjars来处理Web lib依赖项。 也就是说,我的build.sbt包含类似" org.webjars" %" angularjs" %" 1.2.26"。 为了解释我的Javascript源代码,我将pipelineStages:= Seq(rjs,uglify,digest,gzip)添加到了我的build.sbt。

现在,在Play' stage'或者' dist'看起来所有Javascript文件都被丑化了,也就是来自Webjar库的文件 [info] Uglify2文件:/target/web/rjs/build/lib/angularjs/angular.js

我原本预计来自外部Webjar库的资源不会受到影响,因为已经有一个缩小版本。 一个问题是uglify过程需要太长时间。 如何加快丑化进程?

2 个答案:

答案 0 :(得分:1)

有两种方法可以加快Javascript构建步骤:

  • 在运行export SBT_OPTS="$SBT_OPTS -Dsbt.jse.engineType=Node"之前安装node.js并设置activator。使用node.js而不是默认的Javascript引擎可以提供非常显着的加速。有关详细信息,请访问:Migration to play 2.3,请参阅 sbt-web

  • 部分
  • 自定义构建步骤,例如

    • 通过添加到build.sbt来禁用缩小:RjsKey.optimize := "none"
    • 通过添加到build.sbt来限制uglification:例如includeFilter in uglify := GlobFilter("myjs/*.js"),

您可以在这些插件的github网站上找到有关这些选项的更多详细信息:

sbt-uglify

sbt-rjs

答案 1 :(得分:1)

即使sbt-uglify文档说excludeFilter应该排除webjars和公共文件夹,但事实并非如此。

按照马丁的反应定制部分,除了他的女仆打字错误,给RjsKeys添加一个S:

RjsKeys.optimize := "none"