scalatra 컴파일 작업이 sbt의 scala.js packageJS 작업에 종속되도록 만드는 방법은 무엇입니까?

StackOverflow https://stackoverflow.com//questions/23023026

  •  21-12-2019
  •  | 
  •  

문제

scala.js 프로젝트에서 생성된 JavaScript를 제공하려는 scalatra 프로젝트가 있습니다.

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

그러나 저는 scalatra 컴파일 작업이 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에서 구성을 찾을 수 없습니다."라는 메시지와 함께 실패합니다.'패키지JS'.www#www_2.10;0.1 컴파일"에서 필요했습니다.

저는 sbt(그리고 Scalatra와 Scala.js!)를 처음 접했습니다. 누구든지 이 작업을 수행하는 방법을 알려줄 수 있나요?

감사해요 :)

도움이 되었습니까?

해결책

여기서 원하는 것은 사이의 종속성이 아닙니다. 프로젝트 (이게 뭐야? dependsOn 프로젝트에서는 그렇습니다) 그러나 그 사이에는 tasks.

저는 Scalatra에 익숙하지 않지만 sbt 측면에서는 Play와 매우 유사해야 하며 여기에 Scala.js를 사용한 성공적인 Play 프로젝트 템플릿이 있습니다.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 완전히 최적화된 버전의 경우(그러나 변경할 때마다 다시 작성하는 데 몇 초가 걸립니다).

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top