Оптимизация JS из WebJars с использованием sbt-rjs в приложении Play 2.3.x

Можно ли иметь приложение Play 2.3 для соединения / оптимизации JS (с использованием sbt-rjs), которое включено в мое приложение через WebJars?
Чтобы привести конкретный пример: я пытаюсь создать модуль core.js, который содержит все мои сторонние библиотеки, объединенные и сведенные в один файл, который затем можно указать как зависимость для других модулей AMD.
Было бы здорово включить эти библиотеки через WebJars вместо загрузки исходного кода "вручную".

Вот фрагмент из моего файла build.sbt, где я указываю свои зависимости webjar:

// Webjars
libraryDependencies ++= Seq(
  "org.webjars" % "requirejs" % "2.1.15",
  "org.webjars" % "underscorejs" % "1.7.0",
  "org.webjars" % "jquery" % "1.11.1",
  "org.webjars" % "bootstrap" % "3.3.1" exclude("org.webjars", "jquery"),
  "org.webjars" % "angularjs" % "1.3.4-1" exclude("org.webjars", "jquery")
)

Вот мой конфигурационный файл requireJS

requirejs.config({
  baseUrl: '/assets/javascripts',
  shim: {
    'jsRoutes': {
      deps: [],
      exports: 'jsRoutes'
    },
    'angular': {
      deps: ['jquery'],
      exports: 'angular'
    },
    'underscore': {
      exports: '_'
    },
    'angularRoute': ['angular'],
    'angularCookies': ['angular'],
    'bootstrap': ['jquery']
  },
  paths: {
    'requirejs': '../lib/requirejs/require',
    'jquery': '../lib/jquery/jquery',
    'underscore': '../lib/underscorejs/underscore',
    'angular': '../lib/angularjs/angular',
    'angularRoute': '../lib/angularjs/angular-route',
    'angularCookies': '../lib/angularjs/angular-cookies',
    'bootstrap': '../lib/bootstrap/js/bootstrap',
    'jsRoutes': '/jsroutes',
    'core': './core'
  },
  modules: [
    {
      name: 'core'
    }
  ]
});

И, наконец, вот мой модуль core.js:

define(['angular', 'angularRoute', 'underscore', 'bootstrap'], function() {
  // core dependencies are loaded...
});

После запуска activator clean stage из командной строки я надеялся, что встроенный файл core.js будет включать все мои указанные зависимости, объединенные и сведенные в один файл, но он не включает ни одну из них. Если я указываю не-WebJar-файл в качестве зависимости для core.js, он оптимизирует это правильно.

Возможно ли то, что я пытаюсь сделать? Я немного погуглил и так и не смог найти четкого ответа.

Спасибо!

1 ответ

Я использую Play 2.4.3.

добавленной addSbtPlugin("com.typesafe.sbt" % "sbt-rjs" % "1.0.7") к plugins.sbt

// rjs = RequireJS, uglifies, shrinks to one file, replaces WebJars with CDN
client accepts them
pipelineStages := Seq(rjs, digest, gzip)

Это в моем build.sbt выполняет всю сокращающую работу и т. Д., Чтобы подавить JS и webjars.

Другие вопросы по тегам