2014-04-11 6 views
3

scala.js 프로젝트에서 생성 된 JavaScript를 제공하고자하는 scalatra 프로젝트가 있습니다.scalatra 컴파일 작업은 scala.js에 달려 있습니다. sbt에서 packageJS 작업을 하시겠습니까?

나는이 두 프로젝트를 성공적으로 빌드 할 수있는 다중 프로젝트 SBT 빌드를 가지고있다. 즉, scalatra 프로젝트에서 컴파일 및 실행 작업을 사용할 수 있습니다. scala.js 프로젝트에서 packageJS 작업을 사용할 수 있습니다.

그러나 저는 scala.js packageJS 작업에 따라 스칼라 컴파일 작업을 수행 할 수 있기를 매우 원합니다. 따라서 Scalatra 프로젝트가 컴파일 될 때 Scala.js 프로젝트에서 Javascript가 자동으로 생성됩니다. 내 멀티 프로젝트 build.sbt 파일에서

나는 시도했다 :

lazy val wwwjs = project // Scala.js project 

lazy val www = project // Scalatra project 
    .dependsOn(wwwjs % "compile->packageJS") 

그러나 Scalatra 프로젝트를 컴파일 할 때이 wwwjs # wwwjs_2.10에없는 구성 "실패 0.1 'packageJS' 그것은 www # www_2.10; 0.1 컴파일에서 요구되었습니다. "

나는 (그리고 Scalatra와 Scala.js!)에 대해 상당히 새롭다. - 어떻게 할 수 있겠습니까?

감사합니다 :)

(프로젝트에 dependsOn가하는 일입니다) 프로젝트 사이의 의존성이없는 당신이 여기에 원하는

답변

3

하지만 tasks 사이.

나는 Scalatra에 익숙하지 오전하지만, SBT 측 것이 플레이하기가 매우 유사해야합니다, 우리는 여기에 Scala.js와 재생 프로젝트의 성공적인 템플릿이 있습니다 특히 https://github.com/vmunier/play-with-scalajs-example/blob/master/project/Build.scala

, 내가 유도 위의 빌드에서 다음과 같은 기본 적응 :

import scala.scalajs.sbtplugin.ScalaJSPlugin._ // if Build.scala 
import ScalaJSKeys._ 

lazy val wwwjs = project // Scala.js project 

lazy val www = project // Scalatra project 
    .settings(
    compile in Compile <<= (compile in Compile) dependsOn (fastOptJS in (wwwjs, Compile)) 
) 

또는 완전히 최적화 된 버전에 대한 fullOptJS 대신 fastOptJS를 사용 (하지만 그 때마다 당신이 변경을 다시 몇 초 소요).

+0

'preoptimizeJS'는'fastOptJS' 또는'fullOptJS'로 변경되어야합니다. 또한 'import scala.scalajs.sbtplugin.ScalaJSPlugin._'과 'import ScalaJSKeys._'의 두 가지 필수 가져 오기가 있습니다. –