WebJarsを介してアプリに含まれているJSを(sbt-rjsを使用して)Play 2.3アプリで連結/最適化することは可能ですか?
具体的な例を挙げます。core.jsモジュールを作成しようとしています。このモジュールには、連結および縮小されたすべてのサードパーティライブラリが1つのファイルに含まれており、次のように指定できます。他の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ファイルに、指定されたすべての依存関係が連結されて1つのファイルに縮小されることを期待していましたが、それらは含まれていません。非WebJarファイルをcore.jsの依存関係として指定すると、それは正しく最適化されます。
私がやろうとしていることは可能ですか?私はかなりグーグルしていて、どちらの方法でも明確な答えを見つけることができませんでした。
ありがとう!
Play2.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とwebjarに行います。