【发布时间】:2015-04-08 17:23:53
【问题描述】:
是否可以通过 WebJars 将 Play 2.3 应用程序 concat/optimize JS(使用 sbt-rjs)包含在我的应用程序中?
举一个具体的例子:我正在尝试创建一个 核心.js 模块,它包含我所有的第 3 方库,在单个文件中连接和缩小,然后可以指定为其他 AMD 模块的依赖项。
通过 WebJars 包含这些库而不是下载会很棒“手动”来源。
这是我的 build.sbt 文件中的一个 sn-p,我在其中指定了我的 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 的依赖项,它确实会正确优化。
我正在尝试做的事情可能吗?我一直在谷歌上搜索,但无论哪种方式都找不到明确的答案。
谢谢!
【问题讨论】:
-
我现在不确定
sbt-rjs是否可行。您可能想提出问题:github.com/sbt/sbt-rjs/issues
标签: playframework requirejs webjars sbt-web sbt-rjs