development

Play 2.3.x 앱에서 sbt-rjs를 사용하여 WebJars에서 JS 최적화

big-blog 2020. 10. 22. 08:20
반응형

Play 2.3.x 앱에서 sbt-rjs를 사용하여 WebJars에서 JS 최적화


WebJars를 통해 내 앱에 포함 된 Play 2.3 앱이 JS (sbt-rjs 사용)를 연결 / 최적화하도록 할 수 있습니까?
구체적인 예를 들자면 : 저는 다른 AMD 모듈에 대한 종속성으로 지정할 수있는 단일 파일에 연결되고 축소 된 모든 타사 라이브러리를 포함 하는 core.js 모듈 을 만들려고 합니다.
소스를 "수동으로"다운로드하는 대신 WebJars를 통해 이러한 라이브러리를 포함하는 것이 좋습니다.

다음은 내 webjar 종속성을 지정하는 build.sbt 파일 의 스 니펫입니다 .

// 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...
});

After running activator clean stage from the command line I was hoping the built core.js file would include all my specified dependencies concatenated and minified into a single file, but it doesn't include any of them. If I specify a non-WebJar file as a dependency for core.js, it does optimize that correctly.

Is what I'm trying to do possible? I've been googling quite a bit and haven't been able to find a clear answer either way.

Thanks!


I am using Play 2.4.3.

Added addSbtPlugin("com.typesafe.sbt" % "sbt-rjs" % "1.0.7") to plugins.sbt

// rjs = RequireJS, uglifies, shrinks to one file, replaces WebJars with CDN
client accepts them
pipelineStages := Seq(rjs, digest, gzip)

This in my build.sbt does all the shrinking work etc. to bower JS, and webjars.

참고URL : https://stackoverflow.com/questions/28401848/optimizing-js-from-webjars-using-sbt-rjs-in-a-play-2-3-x-app

반응형