在Play 2.3.x应用中使用sbt-rjs从WebJars优化JS


74

是否可以通过WebJars在我的应用程序中包含一个Play 2.3应用程序连接/优化JS(使用sbt-rjs)?
举一个具体的例子:我正在尝试创建一个core.js模块,其中包含所有我的第3方库,这些库在一个文件中串联并缩小了,然后可以指定为其他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的依赖,则它会正确优化该文件。

我想做的事可能吗?我一直在使用Google搜索很多,但没有找到任何一种明确的答案。

谢谢!


1
我不确定sbt-rjs现在是否有可能。您可能要提出一个问题:github.com/sbt/sbt-rjs/issues
James Ward,

Answers:


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中完成了所有的缩减工作,等等。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.