Ускорьте использование 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"),
- отключите минификацию, добавив в build.sbt:
Вы можете найти более подробную информацию об опциях на сайте github этих плагинов:
Хотя в документации sbt-uglify говорится, что excludeFilter должен исключать веб-файлы и общие папки, это не так.
Следуйте части настройки ответа Мартина, за исключением того, что он сделал опечатку, добавьте S к RjsKeys:
RjsKeys.optimize := "none"