Ускорьте использование Javascript в сборке Play 2.3.x для внешних источников Webjar

Я использую Play Framework 2.3.6 и Webjars для зависимостей веб-библиотек. То есть мой build.sbt содержит что-то вроде "org.webjars" % "angularjs" % "1.2.26". Чтобы унизить мои источники Javascript, я добавил pipeStages:= Seq(rjs, uglify, digest, gzip) в мой build.sbt.

Теперь, когда запускаются "Play" или "dist" задачи Play, похоже, что все файлы Javascript становятся увеличенными, то есть также файлами из библиотек Webjar.
[info] Uglify2 file: /target/web/rjs/build/lib/angularjs/angular.js

Я ожидал бы, что исходники из внешних библиотек Webjar останутся нетронутыми, так как уже существует сокращенная версия. Одна из проблем заключается в том, что процесс uglify занимает слишком много времени. Как я могу ускорить процесс углификации?

2 ответа

Решение

Есть два способа ускорить этапы сборки Javascript:

  • Установите node.js и установите export SBT_OPTS="$SBT_OPTS -Dsbt.jse.engineType=Node" перед запуском activator, Использование node.js вместо стандартного движка Javascript дает очень значительное ускорение. Более подробную информацию можно найти здесь: Миграция для игры 2.3, см. Раздел о sbt-web

  • Настройте шаги сборки, например

    • отключите минификацию, добавив в build.sbt: RjsKey.optimize := "none"
    • ограничьте углификацию, добавив в build.sbt: например, includeFilter in uglify := GlobFilter("myjs/*.js"),

Вы можете найти более подробную информацию об опциях на сайте github этих плагинов:

SBT-уродовать

SBT-Х.С.

Хотя в документации sbt-uglify говорится, что excludeFilter должен исключать веб-файлы и общие папки, это не так.

Следуйте части настройки ответа Мартина, за исключением того, что он сделал опечатку, добавьте S к RjsKeys:

RjsKeys.optimize := "none"
Другие вопросы по тегам