Оптимізація JS з WebJars за допомогою sbt-rjs у програмі Play 2.3.x


74

Чи можна встановити додаток 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")
)

Ось мій config build build

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
Я не впевнений, що це можливо sbt-rjsзараз. Можливо, ви захочете подати проблему: github.com/sbt/sbt-rjs/issues
James Ward

Відповіді:


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.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.