在Play 2.3.x应用程序中使用sbt-rjs优化WebJars中的JS
是否有可能通过WebJars有一个Play 2.3应用程序concat /优化JS(使用sbt-rjs)包含在我的应用程序中?
举一个具体的例子:我试图创build一个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构buildconfiguration
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
后,我希望build立的core.js文件将包括所有我指定的依赖连接和缩小到一个单一的文件,但它不包括任何。 如果我指定一个非WebJar文件作为core.js的依赖项 ,它会正确地优化它。
我正在尝试做什么? 我一直在Google上search,无法find明确的答案。
谢谢!
我正在使用Play 2.4.3。
向plugins.sbt添加了addSbtPlugin("com.typesafe.sbt" % "sbt-rjs" % "1.0.7")
// rjs = RequireJS, uglifies, shrinks to one file, replaces WebJars with CDN client accepts them pipelineStages := Seq(rjs, digest, gzip)
这在我的build.sbt做所有缩小的工作等,以减轻JS和网页。